当前位置: 首页 > news >正文

网站建设 教学视频昆明网站建设公司排行

网站建设 教学视频,昆明网站建设公司排行,wordpress不支持中文标签,建设工程消防备案查询网站需求#xff1a;软件划分为用户客户端和主播服务端两个软件client.c和server.c 用户客户端负责#xff1a;1.接收用户的昵称2.接收用户输入的信息#xff0c;能够将信息发送给服务端3.接收服务端回复的数据信息,并完成显示主播服务端负责#xff1a;1.对所有加入直播间的用…需求软件划分为用户客户端和主播服务端两个软件client.c和server.c 用户客户端负责1.接收用户的昵称2.接收用户输入的信息能够将信息发送给服务端3.接收服务端回复的数据信息,并完成显示主播服务端负责1.对所有加入直播间的用户的IP地址和端口实现管理加入、退出2.当有新的客户端加入时,能够向所有客户端提示:欢迎 XXX 用户进入直播间3.当有客户端退出时,能够向所有客户端提示:XXX 离开直播间4.能够实现客户端聊天内容的转发,当某个客户端发送聊天信息时,能够将该信息转给除了该用户之外聊天室内所有其余客户端用户head.h文件 #ifndef __HEAD_H__ #define __HEAD_H__#include sys/types.h #include sys/stat.h #include sys/wait.h #include unistd.h #include fcntl.h #include stdio.h #include string.h #include stdlib.h #include dirent.h #include time.h #include pwd.h #include grp.h #include pthread.h #include semaphore.h #include signal.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h #include sys/sem.h #include sys/socket.h #include arpa/inet.h #include netinet/ip.h #include netinet/in.hstruct address {int mark;struct sockaddr_in addr; };struct msgbuf{int type;char name[32];char text[512]; };#define MSG_TYPE_START 100 #define MSG_TYPE_END 200 #define MSG_TYPE_CHAT 300 #define RECV_ADDR 192.168.1.152 #define RECV_PORT 50000#endifclient.c #include head.hchar name[32] {0}; int sockfd 0; struct sockaddr_in recvaddr; pthread_t tid_send; //发线程 pthread_t tid_recv; //收线程void *sendfun(void *arg) {struct msgbuf sendmsg; ssize_t nsize 0;while (1){memset(sendmsg, 0, sizeof(sendmsg));sendmsg.type MSG_TYPE_CHAT;sprintf(sendmsg.name, %s, name);gets(sendmsg.text);if (!strcmp(sendmsg.text, .quit)){sendmsg.type MSG_TYPE_END;}nsize sendto(sockfd, sendmsg, sizeof(sendmsg), 0, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (-1 nsize){perror(fail to sendto);return NULL;}if (sendmsg.type MSG_TYPE_END){break;}}pthread_cancel(tid_recv);return NULL; }void *recvfun(void *arg) {struct msgbuf recvmsg;ssize_t nsize 0;while (1){memset(recvmsg, 0, sizeof(recvmsg));nsize recvfrom(sockfd, recvmsg, sizeof(recvmsg), 0, NULL, NULL);if (-1 nsize){perror(fail to recvfrom);return NULL;}if (recvmsg.type MSG_TYPE_CHAT){printf(%s(%s:%d)%s\n, recvmsg.name, RECV_ADDR, RECV_PORT, recvmsg.text);}else if (recvmsg.type MSG_TYPE_END){break;}}pthread_cancel(tid_send);return NULL; }int main(void) {struct msgbuf sendmsg;ssize_t nsize 0;recvaddr.sin_family AF_INET;recvaddr.sin_port htons(RECV_PORT);recvaddr.sin_addr.s_addr inet_addr(RECV_ADDR);printf(请输入您的昵称:\n);gets(name);sockfd socket(AF_INET, SOCK_DGRAM, 0);if (-1 sockfd){perror(fail to socket);return -1;}memset(sendmsg, 0, sizeof(sendmsg));sendmsg.type MSG_TYPE_START;sprintf(sendmsg.name, %s, name);nsize sendto(sockfd, sendmsg, sizeof(sendmsg), 0, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (-1 nsize){perror(fail to sendto);return -1;}pthread_create(tid_send, NULL, sendfun, NULL);pthread_create(tid_recv, NULL, recvfun, NULL);pthread_join(tid_send, NULL);pthread_join(tid_recv, NULL);close(sockfd);return 0; }server.c #include head.hstruct address ClientIpList[100];int AddClientIp(struct sockaddr_in TmpAddr) {int i 0;for(i 0;i 100;i){if(ClientIpList[i].mark 0){ClientIpList[i].addr TmpAddr;ClientIpList[i].mark 1;break;}}return 0; } int DelClientIp(struct sockaddr_in TmpAddr) {int i 0;for(i 0;i 100;i){if(0 memcmp(TmpAddr,ClientIpList[i].addr,sizeof(TmpAddr))){ClientIpList[i].mark 0;break;}}return 0; }int BoardcastClientIp(int sockfd,struct sockaddr_in TmpAddr,struct msgbuf TmpMes) {int i 0;ssize_t nsize 0;for(i 0;i 100;i){if(ClientIpList[i].mark 0){continue;}if(0 ! memcmp(TmpAddr,ClientIpList[i].addr,sizeof(TmpAddr))){nsize sendto(sockfd,TmpMes,sizeof(TmpMes),0,(struct sockaddr *)ClientIpList[i].addr,sizeof(ClientIpList[i].addr));if(-1 nsize){continue;}}}return 0; }int main(void) {int sockfd 0;int ret 0;ssize_t nsize 0;struct msgbuf recvmes;struct sockaddr_in recvaddr;struct sockaddr_in sendaddr;socklen_t addrlen sizeof(sendaddr);recvaddr.sin_family AF_INET;recvaddr.sin_port htons(RECV_PORT);recvaddr.sin_addr.s_addr INADDR_ANY;sockfd socket(AF_INET, SOCK_DGRAM, 0);if (-1 sockfd){perror(fail to socket);return -1;}ret bind(sockfd, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (-1 ret){perror(fail to bind);return -1;}memset(ClientIpList,0,sizeof(ClientIpList));while (1){memset(recvmes, 0, sizeof(recvmes));nsize recvfrom(sockfd, recvmes, sizeof(recvmes), 0,(struct sockaddr *)sendaddr, addrlen);if (-1 nsize){perror(fail to recvfrom);return -1;}if(recvmes.type MSG_TYPE_START){AddClientIp(sendaddr);recvmes.type MSG_TYPE_CHAT;sprintf(recvmes.text,%s,recvmes.name);}else if (recvmes.type MSG_TYPE_END){DelClientIp(sendaddr);recvmes.type MSG_TYPE_CHAT;sprintf(recvmes.text,%s,recvmes.name);}if (recvmes.type MSG_TYPE_CHAT){BoardcastClientIp(sockfd,sendaddr,recvmes);}}close(sockfd);return 0; }结果
http://www.w-s-a.com/news/783890/

相关文章:

  • 大连网站前端制作公司局域网视频网站建设
  • 张家界建设局网站电话wordpress网站怎么建
  • 淄博网站建设有实力装修培训机构哪家最好
  • 彩票网站建设seo优化师是什么
  • 怎么做英文网站网站建设基本费用
  • dede网站名称不能保存wordpress运费设置
  • 出口网站制作好一点的网站建设
  • 在小说网站做编辑怎么找韶关市建设局网站
  • 网站策划怎么做内容旅游型网站建设
  • 东莞百度网站推广ppt模板免费下载的网站
  • 网站建设项目管理基本要求网站空间到期影响
  • 做奖杯的企业网站谁有推荐的网址
  • wordpress能做企业站吗wordpress收发邮件
  • 电子产品网站建设策划方案腾讯企业邮箱注册申请免费
  • 哪些网站可以免费做代码自己电脑做网站服务器广域网访问
  • 高端网站设计青海省教育厅门户网站学籍查询
  • 长春网站优化公司网站制作400哪家好
  • 县级门户网站建设的报告开发游戏的软件有哪些
  • 做电子商务的网站wordpress带会员中心
  • 网站域名不变网站可以从做吗网站建设步骤 文档
  • 网站建设中 gif互联网新项目在哪里找
  • 做外包网站猎头公司英文
  • 房屋结构自建设计 网站海淀教育互动平台
  • 网络营销比赛 营销型网站策划热门搜索关键词
  • 网站建设图片代码网络设计师工资
  • 福建网站开发适合交换友情链接的是
  • 企业门户网站建站内乡微网站开发
  • 在线做logo印章网站一般到哪个网站找数据库
  • 哪些网站做免费送东西的广告6郑州人流医院哪家好
  • 高端做网站哪家好sem技术培训