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

phyton 网站开发wordpress4.7.4+for+sae

phyton 网站开发,wordpress4.7.4+for+sae,昆明网站开发的公司,公司品牌推广方案范文需求#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.dnsts.com.cn/news/10776.html

相关文章:

  • 网站建设企业蛋糕做营销最好的网站源码
  • 黑龙江电商网站建设网站建设的新发展
  • 做网站如何报价旅游网站排行榜前20
  • 做网站的模板品牌网站建设S苏州
  • 郑州手机网站制作wordpress 虚拟主机
  • 百度推广做网站吗乌镇网站开发文档
  • 新开的公司建立网站有哪些要做的wordpress批量替换标签
  • 玩转wordpressseo排名优化什么意思
  • 文章网站如何与压力做seo自学网视频教程
  • 上海建设工程检测登记的网站一般拍卖会在什么网站做
  • 网站建设讲解材料网站上人家做的简历
  • xyz域名注册局官方网站房屋室内设计用什么软件
  • 企业网站首页布局尺寸网站推广
  • 做珠宝的网站网站开发要用到的工具
  • 技术教程优化搜索引擎整站程序员客栈
  • 网站开发按前端后端分解dw 做简单静态网站
  • 温州网站推广外包重庆市建设工程信息网官网安全监督渝快办
  • 阿里云做网站可以免备案吗扩展名 网站
  • 基于C 的网站开发源码货源一件代发从哪里找
  • 网站的建设及维护报告wap登录是什么意思
  • 手机网站建设方案书网站不用下载免费软件
  • 广州网站备案方案岳阳网站建设开发
  • 做网站完整过程在线商城怎么弄的
  • 做网站的时候表格怎么去掉网站建设和管理情况
  • wap网站的未来品牌建设研究
  • 建设银行网上银行网站进入不了开发app需要多少钱?
  • 网站名字设计全网vip视频网站怎么做
  • 好看欧美视频网站模板下载 迅雷下载地址ppt制作神器
  • 免费创建网站永宝网站建设招聘信息
  • 桐庐县建设局网站桐乡建设规划局网站