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

珠海网站制作哪家便宜郑州手机网站建设多少钱

珠海网站制作哪家便宜,郑州手机网站建设多少钱,天元建设集团有限公司单位代码,天津市建设交易中心网站并发概念#xff1a;并发是指两个或多个事件在同一时间间隔发生#xff1b;多线程实现TCP并发服务器的实现流程#xff1a;一、创建套接字#xff08;socket函数#xff09;#xff1a;通信域选择IPV4网络协议、套接字类型选择流式#xff1b; int sockfd socket(AF_IN…并发概念并发是指两个或多个事件在同一时间间隔发生多线程实现TCP并发服务器的实现流程一、创建套接字socket函数通信域选择IPV4网络协议、套接字类型选择流式 int sockfd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器的网络信息结构体1.定义网络信息结构体变量2.求出结构体变量的内存空间大小3.结构体清零4.使用IPV4网络协议5.预留给在终端输入的IP地址6.预留给在终端输入的网络字节序的端口号 struct sockaddr_in serveraddr; //定义网络信息结构体变量socklen_t serveraddrlen sizeof(serveraddr);//求出结构体变量的内存空间大小memset(serveraddr,0,serveraddrlen); //结构体清零serveraddr.sin_family AF_INET; //使用IPV4网络协议serveraddr.sin_addr.s_addr inet_addr(argv[1]); //IP地址serveraddr.sin_port htons(atoi(argv[2]));//网络字节序的端口号三、套接字和服务器的网络信息结构体进行绑定bind函数 int ret bind(sockfd,(struct sockaddr *)serveraddr,serveraddrlen);四、套接字设置成被动监听listen函数 int ret1 listen(sockfd, 5);五、阻塞等待客户端的连接accept函数 if(-1 (info.accept_fd accept(sockfd,(struct sockaddr *)(info.clientaddr),clientaddr_len))){perror(accept error);exit(-1);}六、若有客户端连接成功就创建线程专门用来和该客户端通信pthread_create函数 if(0 ! (ret1 pthread_create(thread_id,NULL,message_handling,info))){printf(pthread_create error : errno [%d] errstr [%s]\n,ret1,strerror(ret1));exit(EXIT_FAILURE);}七、将线程设置成分离属性线程结束后由操作系统回收资源pthread_detach函数 if(0 ! (ret2 pthread_detach(thread_id))){printf(pthread_create error : errno [%d] errstr [%s]\n,ret2,strerror(ret2));exit(EXIT_FAILURE);} 八、创建线程处理函数用来接收来自客户端的数据recv函数和给客户端发送应答消息send函数 //线程处理函数void *message_handling(void *arg);int nbytes recv(acceptfd,buf,sizeof(buf),0);printf(客户端发来数据[%s]\n,buf);strcat(buf,----k); //组装应答消息int ret2 send(acceptfd,buf,sizeof(buf),0);九、退出线程pthread_exit函数和关闭套接字close函数 close(info.accept_fd);pthread_exit(NULL);综合应用实例代码如下所示 //多线程实现TCP并发服务器 #include stdio.h #include stdlib.h #include string.h #include sys/types.h #include sys/socket.h #include pthread.h #include stdbool.h #include netinet/in.h #include netinet/ip.h #include arpa/inet.h #include unistd.htypedef struct INFO {int accept_fd;struct sockaddr_in clientaddr;}info_t;//线程处理函数 void *message_handling(void *arg);int main(int argc, char const *argv[]) {//入参合理性检查if(3 ! argc){printf(Usage : %s IP PORT\n,argv[0]);exit(-1);}//创建套接字int sockfd socket(AF_INET,SOCK_STREAM,0);if(-1 sockfd){perror(socket error);exit(-1);}//填充服务器网络信息结构体struct sockaddr_in serveraddr;socklen_t serveraddr_len sizeof(serveraddr);memset(serveraddr,0,serveraddr_len);serveraddr.sin_family AF_INET;serveraddr.sin_addr.s_addr inet_addr(argv[1]);serveraddr.sin_port htons(atoi(argv[2]));//将套接字与服务器网络信息结构体绑定if(-1 bind(sockfd,(struct sockaddr *)serveraddr,serveraddr_len)){perror(bind error);exit(-1);}//将套接字设置成被监听状态if(-1 listen(sockfd,5)){perror(listen error);exit(-1);}info_t info;pthread_t thread_id;int ret1 0;int ret2 0;socklen_t clientaddr_len sizeof(info.clientaddr);while(true){//等待客户端连接if(-1 (info.accept_fd accept(sockfd,(struct sockaddr *)(info.clientaddr),clientaddr_len))){perror(accept error);exit(-1);}//若有客户端连接成功就创建线程专门用来和该客户端通信if(0 ! (ret1 pthread_create(thread_id,NULL,message_handling,info))){printf(pthread_create error : errno [%d] errstr [%s]\n,ret1,strerror(ret1));exit(EXIT_FAILURE);}//将线程设置成分离属性线程结束后由操作系统回收资源if(0 ! (ret2 pthread_detach(thread_id))){printf(pthread_create error : errno [%d] errstr [%s]\n,ret2,strerror(ret2));exit(EXIT_FAILURE);}}close(sockfd);return 0; }void *message_handling(void *arg) {info_t info *(info_t *)arg;printf(客户端[%s : %d]连接到服务器\n,inet_ntoa(info.clientaddr.sin_addr),ntohs(info.clientaddr.sin_port));//接收客户端数据并作出应答int nbytes 0;char buf[128] {0};while(true){memset(buf,0,sizeof(buf));//接收消息if(-1 (nbytes recv(info.accept_fd,buf,sizeof(buf),0))){perror(recv error);break;}else if(0 nbytes){printf(客户端[%s : %d]断开了连接\n,inet_ntoa(info.clientaddr.sin_addr),ntohs(info.clientaddr.sin_port));break;}if(!strcmp(buf,quit)){printf(客户端[%s : %d]退出了\n,inet_ntoa(info.clientaddr.sin_addr),ntohs(info.clientaddr.sin_port));break;}printf(客户端[%s : %d]发来消息[%s]\n,inet_ntoa(info.clientaddr.sin_addr),ntohs(info.clientaddr.sin_port),buf);//组装应答strcat(buf,------k);//发送应答if(-1 send(info.accept_fd,buf,sizeof(buf),0)){perror(send error);break;}}close(info.accept_fd);pthread_exit(NULL);}本示例代码仅供参考
http://www.pierceye.com/news/471148/

相关文章:

  • 商务网站建设的组成包括自动链接 wordpress
  • 网站如何关闭东莞网站开发推荐
  • 自己开网站能赚钱吗网站界面设计描述
  • 二手交易网站建设方案ppt网站备案的作用
  • 北京行业网站建设临沂谁会做网站
  • 网站备案 游戏修改wordpress字体
  • 福建微网站建设价格宝山专业网站建设
  • 做采集网站难不关键词做网站名字
  • 怎么做律师事务所的网站用凡科做网站好吗
  • 免费做网站公司ydwzjs政务网站的建设
  • 企业网站设计总结西安做网站哪里便宜
  • wordpress 电影下载站济南最新消息
  • 怎样做企业的网站公司部门解散
  • 三亚中国检科院生物安全中心门户网站建设什么是响应式网站
  • 为什么要建设公司网站怎么制作图片视频和配音乐
  • 建设项目环境影响登记表备案系统网站论坛门户网站开发
  • 铁岭网站建设建设云企业服务平台
  • 响应式网站制作方法泰安明航网络科技有限公司
  • 建设网站需要几级安全等保深圳网站开发招聘
  • 无锡网站建设制作公司甘肃省建设工程网站
  • 广州微信网站建设哪家好公司网站排名优化手段
  • 深圳市路桥建设集团有限公司招标采购网站crntos wordpress
  • 广告网站制作报价深圳建筑设计平台网站
  • 网站ns记录南宁企业建站模板
  • 网站服务建设目前做哪些网站能致富
  • 专业网站定制公司深圳网页制作服务
  • 白云网站(建设信科网络)网页工具在哪里
  • 食品网站策划网站建设送企业邮箱吗
  • 天津自贸区建设局网站手机网站导航设计
  • 企业网站建设制作大连网站建设吗