I    can   because   I   think   I   can !
首页(8) 搜索技术(3) Unix学习(2) 算法研究(0) 杂七杂八(1) 脚本语言(0) 职业生涯(0) 数据挖掘(0) 
 博客信息
blog名称:拓扑空间
日志总数:8
评论数量:3
留言数量:0
访问次数:26564
建立时间:2007年7月26日
最新公告
经过剑桥三一学院,我以牛顿之名许愿,当空间只剩下拓扑的语言,映射就成了永垂不朽的诗篇,用超越数去超越永远,一万年不变.
最新日志
Linux下 FTP设计与实现
Linux C 简单聊天程序的实现
编写简单的分词程序
分词中的难题
中文分词技术
终于把烦人的广告代码屏蔽掉了
谁知道怎么样屏蔽blog中的google
学术人生
最新回复
回复:谁知道怎么样屏蔽blog中的goo
回复:谁知道怎么样屏蔽blog中的goo
最新留言
签写新留言

友情链接

其他信息
Linux C 简单聊天程序的实现  逍凌 发表于 2007/8/9 13:54:00
用Linux C写了一个局域网的聊天程序,基本实现了服务端能读取客户端的数据,采用I/O多路复用技术实现了异步读入,客户端的任何一个成员发送的消息都能在服务端显示,稍后专门对Select()函数的应用作详解。 客户端的任一个成员发送的消息,其它成员都能读取,以实现聊天功能,主要采用fork机制,函数一开始就调用fork分为父进程和子进程,子进程把从服务端来的行拷贝到标准输出,父进程把从标准输入的行拷贝到服务端。 500)this.width=500'> 服务端Select()函数应用: 其函数原型为: int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 此函数的功能是由内核检测在timeout时间内,是否有readfds,writefds,exceptfds三个句柄集(file descriptors)里的某个句柄(file descriptor)的状态符合寻求,即readfds句柄集里有句柄可读或writefds句柄集里有可写或exceptfds句柄集里有例外发生,任何一个有变化函数就立即返回,返回值为timeout发生状态变化的句柄个数。 n是所有readfds,writefds,exceptfds三个句柄集(file descriptors)里编号最大值加1。比如:要检测两个socket句柄fd1和fd2在timeout时间内是否分别可读和可写就可以这样: 先把两个句柄集(file descriptors)清零:         FD_ZERO (&readfds);         FD_ZERO (&writefds); 然后把fd1加入读检测集:         FD_SET (fd1, &readfds); 然后把fd2加入写检测集:         FD_SET (fd2, &writefds); 客户端fork调用: void str_cli(char *name,FILE *fp, int sockfd) {        int len= BUF_SIZE;    char   sendline[BUF_SIZE], recvline[BUF_SIZE];    char sendline2[BUF_SIZE];    pid_t pid;    pid = fork();      if(pid == 0){      for(;;){         len = recv(sockfd, recvline, len,0);         if(len ==0)            exit(0);          fputs(recvline, stdout);      }    }else{        for(;;){         strcpy(sendline2,name);         if (fgets(sendline, BUF_SIZE, fp) == NULL) {             shutdown(sockfd, SHUT_WR);                exit(0);         }              strcat(sendline2,sendline);                  if(send(sockfd, sendline2, len,0)<=0){             perror("send");         }      }    } }   以下是程序最终运行结果: 500)this.width=500'>

      [

阅读全文(3781) | 回复(0) | 编辑 | 精华]


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
管理      摘写      注销
站点首页 | 苏ICP备05006046号
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.436 second(s), page refreshed 144820077 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号