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

网站网站建设设计公司网站技术制作流程图

网站网站建设设计公司,网站技术制作流程图,网站上的在线答题是怎么做的,wordpress主题创建数据表select函数简介: select是Linux中常用的多路复用IO机制#xff0c;它允许程序同时监控多个文件描述符#xff08;可以是套接字socket#xff0c;也可以是普通文件#xff09;的读、写和异常事件。 #include sys/select.h #include sys/time.h …select函数简介:         select是Linux中常用的多路复用IO机制它允许程序同时监控多个文件描述符可以是套接字socket也可以是普通文件的读、写和异常事件。   #include sys/select.h #include sys/time.h int select(int maxfd, fd_set* readset, fd_set* writeset, fd_set* exceptset, const struct timeval* timeout);//参数 //maxfd监视对象文件描述符数量。 //readset将所有关注“是否存在待读取数据”的文件描述符注册到fd_set变量并传递其地址值。 //writeset 将所有关注“是否可传输无阻塞数据”的文件描述符注册到fd_set变量并传递其地址值。 //exceptset将所有关注“是否发生异常”的文件描述符注册到fd_set变量并传递其地址值。 //timeout调用select后为防止陷入无限阻塞状态传递超时信息。//返回值错误返回-1超时返回0。当关注的事件返回时返回大于0的值该值是发生事件的文件描述符数。 关于文件描述符的操作以下四个函数是用于处理fd_set类型数据的 FD_ZERO(fd_set *set): 这个函数用于清除一个fd_set的所有位即初始化一个fd_set。 FD_SET(int fd, fd_set *set): 这个函数用于将特定的文件描述符fd加入到fd_set中。 FD_CLR(int fd, fd_set *set): 这个函数用于将特定的文件描述符fd从fd_set中移除。 FD_ISSET(int fd, fd_set *set): 这个函数用于检查特定的文件描述符fd是否在fd_set中如果在函数返回非零值否则返回0。 使用这些函数我们可以方便地对文件描述符集合进行操作以便于使用select函数进行IO操作的复用。   select函数优缺点 优点在poll和epoll面前主要是缺点它出现的比较早。 缺点 文件描述符有限默认为1024这个值可以修改。如果需要处理的并发连接数过多select可能无法满足需求。 多次copy每次select都要把文件描述符拷贝到内核增加了系统的开销。 使用复杂select在返回时只会告诉用户哪些描述符集合是就绪的但并不会直接告诉用户哪一个具体的文件描述符就绪用户需要自己去遍历这些集合操作比较复杂。 重复操作每次select返回后所有未就绪的文件描述符都会被移除因此每次使用都需要重新向集合中添加描述符。 select可以让一个线程同时处理多个客户端的连接。而避免了太多线程导致占用资源过大多,下边是一个tcp协议的服务器代码示例。客户端可以用网络调试助手进行模拟服务器功能客户端发送过来的数据接收后再转发给客户端。 #includestdlib.h #includestdio.h #includenetinet/in.h #includestring.h #includeerrno.h #includesys/socket.h #includesys/select.h#define SERV_PORT 8888 #define BUFFER_SIZE 128int main(void) {int sockfd socket(AF_INET,SOCK_STREAM,0);struct sockaddr_in servaddr;memset(servaddr,0,sizeof(struct sockaddr_in));servaddr.sin_port htons(SERV_PORT);servaddr.sin_family AF_INET;servaddr.sin_addr.s_addr htonl(INADDR_ANY);if(-1 bind(sockfd,(struct sockaddr*)servaddr,sizeof(struct sockaddr))){perror(bind);return -1;}listen(sockfd,10);fd_set fds1,fds2;FD_ZERO(fds1);FD_SET(sockfd,fds1);int maxfd sockfd;printf(select test:\n);while(1){fds2 fds1;int nready select(maxfd1,fds2,NULL,NULL,NULL);if(FD_ISSET(sockfd,fds2)){struct sockaddr_in clientaddr;socklen_t len sizeof(clientaddr);int clientfd accept(sockfd,(struct sockaddr*)clientaddr,len);FD_SET(clientfd,fds1);maxfd clientfd;printf(clientfd:%d\n,clientfd);}int i 0;for(i sockfd 1;imaxfd;i){if(FD_ISSET(i,fds2)){char buffer[BUFFER_SIZE] {0};int count recv(i,buffer,BUFFER_SIZE,0);if(!count){printf(disconnect\n);FD_CLR(i,fds1);close(i);break;}send(i,buffer,BUFFER_SIZE,0);printf(clientfd:%d,count:%d,buffer:%s\n,i,count,buffer);}}} }
http://www.w-s-a.com/news/542400/

相关文章:

  • 做手机旅游网站智慧校园登录入口
  • 莆田网站建设维护国外极简网站
  • 百度怎样收录网站缪斯设计集团
  • 网站建设在开封找谁做wordpress 数据转换
  • 旅游网站开发的流程江苏付费网络推广培训
  • 网站软文标题2018wordpress主题
  • 德清网站设计wordpress免登录发布接
  • 可以做游戏的网站有哪些客户关系管理系统的主要功能
  • 整人关不掉的网站怎么做广东省网站免备案表
  • 网站设计素材edu域名网站
  • 中山学校的网站建设wordpress文章图片显示不出
  • 兰溪城市建设规划网站网站联盟的基本流程
  • 免费推广网站注册入口小说阅读网站怎么建设
  • 新网站怎么做网络推广怎么做企业网站排名
  • jsp商业网站开发网站链接如何做二维码
  • 江苏高校品牌专业建设网站怎么制作网站搜索窗口
  • 北京app建设 网站开发公司织梦网站seo
  • 大学网站 作风建设专题汽车配件外贸出口公司
  • 东莞做网站系统购物网站建设精英
  • 建设vip网站相关视频网站营销建设公司
  • 微站直播平台杭州seo按天计费
  • seo 新旧网站 两个域名福州设计网站建设
  • 如何做网站客户端如何做网络营销网站
  • 苏州网站建设制度打鱼网站建设
  • 瓜子二手车直卖网上海小红书seo
  • 天津中小企业网站制作珠海做网站的
  • 网站排名影响因素最牛的科技网站建设
  • 长春网站建设公司怎么样电商网站建设与开发期末考试
  • 品牌网站建设搭建国内外网站建设
  • 辽宁人社app一直更新整站seo定制