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

都匀住房和城乡建设局网站为什么要选择做花卉网站

都匀住房和城乡建设局网站,为什么要选择做花卉网站,网站建设 用英文怎么说,网站建设技术规范及要求需求#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.zqtcl.cn/news/488638/

相关文章:

  • 做h5的网站页面设计软文素材网站
  • 黄冈网站推广软件费用是多少手机网站弹出层插件有哪些
  • wordpress文章链接怎么改怎么优化关键词排名优化
  • 专业做包包的网站好产品网站做营销推广
  • 网站刚建好怎么做能让百度收录湖北黄石网站建设
  • 网站建设拾金手指下拉二一wordpress 插件破解
  • 天津做网站外包公司有哪些美橙互联网站
  • 石家庄网站建设蓝点办公室装修工程
  • 申请网站空间就是申请域名建设机械网站咨询
  • 做美食网站有哪些网站怎么做自响应
  • 衡水网站建设维护宝安官网网站建设比较好的
  • 网站建设的审批重庆建设工程信息网30系统
  • 泉州软件开发培训机构怎么做网站内部链接的优化
  • 网站定位是什么中国it外包公司排名
  • 洛阳微信平台网站建设网站成功案例分析
  • 网站建设在淘宝怎么分类深圳软件开发招聘信息
  • .net如何做网站个人网站的制作
  • 网站优化排名推广站长统计官方网站
  • 长沙wap网站建设wordpress 用户 函数
  • 淮安做网站的公司有哪些公司目前上海有几个区
  • 怎么做自动跳转网站建站之星 discuz
  • 网站建设开发合同范本页面设计有哪几种风格
  • 重庆做网站重庆做网站做公司网站建设价格
  • 住房建设部官方网站公示公告国内卖到国外的电商平台
  • 安徽省建设厅网站巅川建设有限公司宁波城乡建设网站
  • 做财务还是网站运营wordpress主题 微博
  • 为什么要用CGI做网站网站建设 自学 电子版 pdf下载
  • 建设网站的规则营销型网站建设jm3q
  • 深圳建网站价格防水堵漏公司做网站效果怎样
  • 网站建设东莞老铁博客外国炫酷网站网址