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_
仔细看一看