c語言區域網
Ⅰ c語言,區域網讀寫文件的問題
不必從C語言本身入手。
你的需求是:分布在同一個網路內(可相互訪問)的多個電腦上的程序,需要讀取存放在某一台電腦上的某個文件。
將該文件所在目錄設置為共享即可。
其它主機上的程序通過映射網路驅動器的方式,訪問該文件。
Ⅱ C語言開發區域網抓包工具,需要怎樣弄呢能給個思路嗎謝謝
沒做過,不過我感覺可以把自己的主機當做一個中轉,讓A向B發包的時候實際上先發給你,然後你再發給B,這樣記錄A發的內容。
Ⅲ 我想用c語言做一個能在區域網互傳文件的小程序,求思路
寫這個程序不是懂C語言能寫出來的;要懂網路編程;還有你要用UDP方式還是TCP方式;
Ⅳ C語言程序填空 輸入1輸出廣域網,輸入2輸出城域網,輸入3輸出區域網
空1填flag>=1 && flag <=3,空2填break;,空3是printf(。。。)輸出區域網
Ⅳ C語言寫的區域網聊天工具怎樣應用到外網
看你的程序怎麼寫的,如果是使用TCP或者UDP偵聽,指定IP地址進行鏈接,那是肯定沒有問題的,什麼環境都可以使用。
但是如果是使用廣播方式發送消息,那就只能區域網使用,一般的路由器都會過濾廣播。
補充:
只要不是依賴廣播的就可以用,無需修改,依賴廣播的修改為指定地址鏈接(一對一)。沒看見你的程序,誰知道怎麼修改。
Ⅵ C語言關於區域網的問題,幫忙看一下
你說的CS的案例,是這樣實現的,首先,你運行的CS程序,監聽著一個埠,然後有人建立一個房間時,向區域網內進行一次廣播,所有區域網內運行著的CS程序都收到了這個廣播,並將廣播來源刷新在房間列表上。
當你的CS程序剛運行起來,想要知道已有的房間時,也向區域網內發送一個廣播,此時建立著房間的CS程序收到廣播後給出回應,你的CS程序也就有了全部房間的列表。
這類程序一般使用無連接的UDP協議實現比較方便。
Ⅶ linux下用c語言編寫區域網聊天工具
/*伺服器*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define SERVPORT 5555
#define BACKLOG 10
#define MAX(a,b) ((a)>(b)?(a):(b))
void str_echo(int);
void server()
{
int sockfd,client_fd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
socklen_t sin_size;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))== -1)
{
perror("socket create error!");
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind error!");
exit(1);
}
if(listen(sockfd,BACKLOG)==-1)
{
perror("listen error!");
exit(1);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if((client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)
{
perror("accept error!");
continue;
}
printf("received a connection from %s\n",inet_ntoa(remote_addr.sin_addr));
if(!fork())
{
close(sockfd);
str_echo(client_fd);
exit(0);
}
close(client_fd);
}
}
void str_echo(int sockfd)
{
int maxfd;
char sendbuf[1024]={0};
char recvbuf[1024]={0};
fd_set rfds;
while(1)
{
FD_SET(0,&rfds);
FD_SET(sockfd,&rfds);
maxfd=MAX(0,sockfd)+1;
select(maxfd,&rfds,NULL,NULL,NULL);
if(FD_ISSET(sockfd,&rfds))
{
bzero(recvbuf,1024);
recv(sockfd,recvbuf,1024,0);
printf("C:%s\n",recvbuf);
}
if(FD_ISSET(0,&rfds))
{
read(0,sendbuf,1024);
send(sockfd,sendbuf,strlen(sendbuf),0);
bzero(sendbuf,1024);
}
}
}
int main()
{
server();
return 0;
}
/*客戶端*/
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define SERVPORT 5555
#define MAXSIZE 1024
#define MAX(a,b) ((a)>(b)?(a):(b))
void client(int argc,char **argv)
{
int sockfd,maxfd;
char sendbuf[MAXSIZE]={0};
char recvbuf[MAXSIZE]={0};
// struct hostent *host;
struct sockaddr_in serv_addr;
fd_set rfds;
/* if(argc<2)
{
fprintf(stderr,"Please enter the sserver's name!\n");
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
herror("get host by name error!\n");
exit(1);
}
*/
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket creat error!\n");
exit(1);
}
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
// serv_addr.sin_addr=*((struct in_addr *)host->h_addr);
serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
bzero(&(serv_addr.sin_zero),8);
if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)
{
perror("connection error!\n");
exit(1);
}
FD_ZERO(&rfds);
while(1)
{
FD_SET(0,&rfds);
FD_SET(sockfd,&rfds);
maxfd=MAX(0,sockfd)+1;
select(maxfd,&rfds,NULL,NULL,NULL);
if(FD_ISSET(sockfd,&rfds))
{
bzero(recvbuf,MAXSIZE);
recv(sockfd,recvbuf,MAXSIZE,0);
printf("S:%s\n",recvbuf);
}
if(FD_ISSET(0,&rfds))
{
fgets(sendbuf,MAXSIZE,stdin);
send(sockfd,sendbuf,strlen(sendbuf),0);
bzero(sendbuf,MAXSIZE);
}
}
// close(sockfd);
}
int main(int argc,char **argv)
{
client(argc,argv);
return 0;
}
Ⅷ 關於用C語言開發一個簡單的區域網聊天軟體
Linux系統都是C寫的
用C當然行得通
就是個socket編程嘛
我們原來做過一個的原理描述
當然
這個是C\S模式的
其實你可以做成
無服務端的
本系統具有區域網聊天功能。採用了C\S模式(即伺服器創建套接字後,轉換為監聽套接字,一直在監聽是否由客戶端的請求。伺服器接收到相應的請求後,進行相應的處理)。採用了TCP/IP(面向連接)協議。運用了SOCKET套接字實現了很方便的訪問TCP/IP協議。多線程的操作。
伺服器的程序(簡述):
創建socket-->bind()-->listen()-->accept()-->recv/send()-->close();
客戶端的程序(簡述):
創建scoket-->發送connect-->recv/send()-->close();
Ⅸ C語言問題:區域網聊天系統中的伺服器怎麼區分不同的客戶端並把數據傳給客戶端
通常伺服器是這樣的:
struct sockaddr clientAddr;
int ret = accept(s,&clientAddr,sizeof(struct sockaddr));
if(ret > 0)
{
....
}
SOCKET PASCAL accept( SOCKET s, struct sockaddr * addr,int * addrlen);
請看accept原型 第2個參數為指針 。也就是如果accept成功 那麼伺服器端就會得到客戶端的struct sockaddr結構體數據,裡麵包含了客戶的ip port等。
實際中要區分的話,應該是有類似於自擬協議,比如約定好,客戶端連上伺服器後,主動發送包含身份的信息給伺服器,伺服器識別後,才開始為該客戶服務。
Ⅹ 如何用C語言編寫一個區域網的聊天工具
http://wenku..com/link?url=--mbfxAWFelNOvCNnxOY3tloTTuJ6h-WXp3WD_8eWo4HGtHpE6SbOB6Yyh0CPw_qepM-O_
仔細看一看