当前位置: 首页 > 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.zqtcl.cn/news/471148/

相关文章:

  • 小型企业网站系统南京seo外包平台
  • 曲靖网站制作邢台网站制作那家便宜
  • wordpress中portfolio重庆网站seo按天计费
  • 做淘客网站需要多大的空间工程公司名称大全简单大气
  • 康县建设局网站网站做优化
  • 笔记网站开发代码下载了wordpress后
  • 北京招聘高级网站开发工程师域名最新通知
  • 企业如何实现高端网站建设西安百度推广开户
  • 广西城乡住房建设厅网站首页本地 安装 WordPress主题
  • 网站开发 技术方案设计一个软件需要多少钱
  • 网站如何做死链接提交建设银行网站官网网址
  • 网站难做吗承德平台
  • 手机备案网站营销网络建设怎么写
  • 建个网站要花多少钱WordPress密码重设怎么改
  • 招商网站建设免费网站改版 升级的目的
  • 安徽圣力建设集团网站如何自己开发微信小程序
  • 学院网站板块盘多多搜索引擎入口
  • 网站seo内部优化wordpress建站网站报错
  • 网站建设科技国外网站入口
  • 怎样用网站做淘宝推广免费的项目管理软件
  • 共青城网站建设微网站开发报价
  • 网站建设选超速云建站网站建设公司比较
  • 芜湖网络科技有限公司沈阳网站推广优化公司哪家好
  • 自己制作图片文字图片网站建设和优化内容最重要性
  • 邢台做网站优化建筑行业新闻资讯
  • 站长统计app最新版本2023网站标题是关键词吗
  • 中山精品网站建设市场wordpress登陆phpadmin
  • 泸县手机网站建设佛山城市建设工程有限公司
  • 长沙网站推广排名优化wordpress主题字体更改
  • 深圳网站建设软件定制公司房地产开发公司注册资金要求