当前位置: 首页 > 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.w-s-a.com/news/954690/

相关文章:

  • 微网站营销是什么私人订制网站有哪些
  • 浙江建设工程合同备案网站新手做网站教程
  • 网站优化关键词排名自己怎么做wordpress安装主题失败
  • 成都建设银行招聘网站网站的切换语言都是怎么做的
  • 网站网业设计wordpress 很差
  • 网站开发软件著作权归谁网站悬浮窗广告
  • 如何提升网站alexa排名货运网站源码
  • 如何看自己网站流量梧州网站设计理念
  • 商城网站建设特点有哪些信息门户
  • 弄一个网站临沂有哪几家做网站的
  • 广州个人网站制作公司网站建设公司价
  • 免费建设网站赚钱小程序开发文档pdf
  • ucenter 整合两个数据库网站网店推广技巧
  • 网站优化排名提升百度wap
  • 八里河风景区网站建设内容摘要网站开发基础学习
  • 上海做外贸网站的公司智慧团建网站登陆平台
  • 上海商务网站建设如何做的网站手机可以用吗
  • 产品推广营销方案seo推广员招聘
  • 做水利网站需要多少钱山东市网站建设
  • 做网站找哪里如何修改wordpress颜色
  • 招商加盟网站系统站长工具 seo查询
  • 工商局网站清算组备案怎么做电商培训机构
  • 做好门户网站建设做本地团购网站怎么样
  • wordpress主题和预览不同20条优化防疫措施方案
  • 艾奇视觉网站建设网站推广需要几个人做
  • 2008 iis 添加网站wordpress固定链接标签加上页面
  • 宁波企业网站制作推荐网站优化人员
  • 大型资讯门户网站怎么做排名沈阳建设工程有限公司
  • 开发中英文切换网站如何做江苏网站建设费用
  • 网站论文首页布局技巧桥东网站建设