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

口碑好的网站建设服务网站开发外包协议

口碑好的网站建设服务,网站开发外包协议,怎么做微信推广和宣传,深圳百度搜索排名优化select实现TCP小型并发服务器的流程#xff1a;一、创建套接字#xff08;socket函数#xff09;#xff1a;通信域选择IPV4网络协议、套接字类型选择流式#xff1b; int sockfd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器的网…select实现TCP小型并发服务器的流程一、创建套接字socket函数通信域选择IPV4网络协议、套接字类型选择流式 int sockfd socket(AF_INET,SOCK_STREAM,0); //通信域选择IPV4、套接字类型选择流式二、填充服务器的网络信息结构体1.定义网络信息结构体变量2.求出网络信息结构体变量的内存空间大小以作备用3.网络信息结构体清04.使用IPV4网络协议AF_INET5.在终端输入的服务器端主机的IP地址inet_addr(argv[1])6.在终端输入的服务器端网络字节序的端口号htons(atoi(argv[2])) 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);五、创建要监听的文件描述符集合使用select函数后会将没有就绪的文件描述符在集合中去除所以需要创建两个文件描述符集合一个是母本read_fds类似于常量保持不变而另一个作为副本read_fds_t类似于变量可以改变 fd_set read_fds;FD_ZERO(read_fds);fd_set read_fds_t;FD_ZERO(read_fds_t);六、把创建的套接字添加到要监视的集合中 FD_SET(sockfd,read_fds);int fd_max 0;fd_max fd_max sockfd ? fd_max : sockfd;七、设置系统时间结构体变量用来指定超时的时间 struct timeval tm_out;八、等待文件描述符中的事件是否就绪成功则返回就绪的文件描述符的个数select函数select函数 #include sys/select.hint select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);/*参数nfds 要监视的最大文件描述符1readfds 要监视的读文件描述符集合 不关心可以传NULLwritefds 要监视的写文件描述符集合 不关心可以传NULLexceptfds 要监视的异常文件描述符集合 不关心可以传NULLtimeout 超时时间 如果设置成NULL 会一直阻塞 直到有文件描述符就绪返回值成功 就绪的文件描述符的个数超时 0失败 -1 重置错误码*///struct timeval 可以指定超时时间//如果结构体的两个成员都为0 表示非阻塞struct timeval {long tv_sec; //秒 long tv_usec; //微秒};void FD_CLR(int fd, fd_set *set); //将文件描述符在集合中删除int FD_ISSET(int fd, fd_set *set); //判断文件描述符是否还在集合中// 返回0 表示不在了 非0 表示在void FD_SET(int fd, fd_set *set); //向集合中添加一个文件描述符void FD_ZERO(fd_set *set); //清空集合 if(-1 (ret select(fd_max 1,read_fds_t,NULL,NULL,tm_out))){perror(select error);exit(-1);}else if(0 ret){puts(timeout!!!!!);putchar(\n);continue;}九、遍历文件描述符集合判断哪些文件描述符已经准备就绪 for(int i 3; i fd_max 1 0 ! ret; i){...}十、判断文件描述符是否还在集合中并且接收来自客户端的数据recv函数和给客户端发送应答消息send函数 if(FD_ISSET(i,read_fds_t)){//说明有新的客户端连接服务器if(i sockfd){ if(-1 (accept_fd accept(sockfd,NULL,NULL))){perror(accept error);exit(-1);}printf(客户端[%d]连接到服务器\n,accept_fd);//将新连接的客户端的套接字添加到要监视的集合中FD_SET(accept_fd,read_fds);fd_max fd_max accept_fd ? fd_max : accept_fd;}else //之前连接的客户端在向服务器发送信息{memset(buf,0,sizeof(buf));if(-1 (nbytes recv(i,buf,sizeof(buf),0))){perror(recv error);exit(-1);}else if(0 nbytes){printf(客户端[%d]已断开连接\n,i);//将已断开连接客户端的套接字在文件描述符集合中剔除FD_CLR(i,read_fds);//关闭套接字close(i);continue;}if(!strncmp(buf,quit,4)){printf(客户端[%d]已退出\n,i);//将已断开连接客户端的套接字在文件描述符集合中剔除FD_CLR(i,read_fds);//关闭套接字close(i);continue;}printf(客户端[%d]发来信息[%s]\n,i,buf);//组装应答消息strcat(buf,----------k);//给客户端发送应答消息if(-1 send(i,buf,sizeof(buf),0)){perror(send error);exit(-1);}}ret--; //减少遍历次数}十一、关闭套接字close函数 close(sockfd);
http://www.dnsts.com.cn/news/249967.html

相关文章:

  • 溧阳网站建设报价怎么自己做网站赚钱吗
  • 开发建设网站怎么把网页里的视频提取出来
  • 网站 设计公司 温州wordpress 文章tag标签
  • 做手机旅游网站做淘宝客网站要备案吗
  • 宜宾网站建设公司广东专注网站建设怎么样
  • 苏州企业网站建设学校精品课网站怎么做
  • 杭州品牌网站建设公司专业网站策划
  • 建网站的公司建筑工程师培训学校
  • 响应式网站用什么工具视频网站logo怎么做的
  • 江苏 江苏省住房和城乡建设厅网站信阳工程建设一体化平台网站
  • 南宁软件优化网站项目网络技术
  • 大型网站建设套餐自己搭建ddns动态域名解析
  • 网站开发速成要怎么制作网站
  • 虚拟主机购买网站网站做接口需要哪些
  • 网站 dns 解析免费建英文网站
  • 怎么学网站设计wordpress文章标题标签
  • 企业网站的制作做网站 广告 备案
  • 中联网站建设南昌网站排名推广
  • 天津市建设行业联合会网站江苏省城乡建设厅建设网站
  • 做云词图的网站钉钉crm客户管理系统
  • 网站什么时候做负载均衡发帖推广平台
  • 境外网站开发网站优化平台有哪些
  • 企业网站模板中文 产品列表备案用网站建设方案书
  • 济南网站建设服务公司一般网站用什么数据库
  • html制作网站的步骤百度搜索入口
  • 上海备案证查询网站查询系统自闭症网站的建设意义
  • 网站建设面试对策网站制作怎样盈利
  • 自己做网站用哪个软件hi宝贝网站建设那家好
  • 0基础学网站设计wordpress图片500
  • 网站建设自己在家接单网站推广方法及特点