全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 区块链 >

模拟QQ聊天室(线程并发)

时间:2018-01-13 16:26

人气:

作者:admin

标签: 聊天室  线程  模拟  并发 

导读:模拟QQ聊天室(线程并发)-#includestdio.h#includestdlib.h#includestring.h#includesys/socket.h#includenetinet/in.h#includeunistd.h#includectype.h#includearpa/inet.h#includeerrno.h#includetime.h#define LISTENQ 1000 //最大连接数#...

#include #include #include #include #include #include #include #include #include #include #define LISTENQ 1000 //最大连接数 #define MAXLINE 512 //发送消息的最长字节 #define MAXMEM 1000 #define NAMELEN 20 //名字长度 struct socketcfd { char name[20]; int fd; }; int listenfd; //分别记录服务器端的套接字与连接的多个客户端的套接字 struct socketcfd connfd[MAXMEM]; void rcv_snd(void *arg) //服务器接受并转发消息函数 { char* ask="请输入你的名字:"; char* ask1="使用说明:\n1、群聊可以直接发送消息,\n2、私聊请先输入@+人名+空格+内容,\n3、退出直接输入“bye”\n-------------------------------------------"; char* ch="此用户不存在"; char* ch1="群聊"; char* ch2="私聊"; char buff[MAXLINE]; //用户姓名 char buff1[MAXLINE]; //聊天内容(包括私聊和群聊,然后对它进行分析) char buff2[MAXLINE]; //发送消息的时间 char buff3[MAXLINE]; //私聊时接受用户的姓名 char buff4[MAXLINE]; //私聊时发送的内容 time_t ticks; int i=0; int retval; int len; int k=0,j=0,m=0; int p; int n=(int *)arg; //获取此进程对应的套接字用户的名字 write(connfd[n].fd,ask,strlen(ask)); len=read(connfd[n].fd,connfd[n].name,NAMELEN); if(len>0){ connfd[n].name[len]=0; } printf("用户姓名:%s\n",connfd[n].name); //把当前用户的加入告知所有用户 strcpy(buff,connfd[n].name); strcat(buff,"\t加入聊天"); for(i=0;i0) { buff1[len]=0; //当前用户的输入信息为“bye”时,当前用户退出 if(strcmp("bye",buff1)==0){ printf("%s用户已退出\n",connfd[n].name); close(connfd[n].fd); connfd[n].fd=-1; pthread_exit(&retval); } //通过分析发送的信息判断是群聊还是私聊 if(buff1[0]=='@'){ j=0;m=0; for(k=1;kp){ buff4[m]=buff1[i]; m++; } else if(iMAXMEM){ write(connfd[n].fd,ch,strlen(ch)); } } }else{ ticks=time(NULL); sprintf(buff2,"%.24s\r\n",ctime(&ticks)); strcpy(buff,buff2); strcat(buff,ch1); strcat(buff,"\t"); strcat(buff,connfd[n].name); strcat(buff,"\n"); strcat(buff,buff1); for(i=0;i


客户端:
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信