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

扬中网站建设怎么样搜索引擎优化的目的是什么

扬中网站建设怎么样,搜索引擎优化的目的是什么,网站建设 模板中心,cpa广告联盟网站建设select系统调用是用来让我们的程序监视多个文件描述符(file descriptor)的状态变化的。程序会停在select这里等待#xff0c;直到被监视的文件描述符有某一个或多个发生了状态改变。select函数原型如下#xff1a;int select(int nfds, fd_set *readfds, fd_set *writefds, f…select系统调用是用来让我们的程序监视多个文件描述符(file descriptor)的状态变化的。程序会停在select这里等待直到被监视的文件描述符有某一个或多个发生了状态改变。select函数原型如下int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);函数的最后一个参数timeout显然是一个超时时间值其类型是struct timeval *即一个struct timeval结构的变量的指针所以我们在程序里要申明一个struct timeval tv;然后把变量tv的地址tv传递给select函数。struct timeval结构如下struct timeval {long    tv_sec;         /* seconds */long    tv_usec;        /* microseconds */};第2、3、4三个参数是一样的类型 fd_set *即我们在程序里要申明几个fd_set类型的变量比如rdfds, wtfds, exfds然后把这个变量的地址rdfds, wtfds, exfds 传递给select函数。这三个参数都是一个描述符的集合第一个rdfds是用来保存这样的描述符的当描述符的状态变成可读的时系统就会告诉select函数返回同理第二个wtfds是指有描述符状态变成可写的时系统就会告诉select函数返回同理第三个参数exfds是特殊情况即描述符上有特殊情况发生时系统会告诉select函数返回。特殊情况比如对方通过一个socket描述符发来了紧急数据。如果我们程序里只想检测某个socket是否有数据可读我们可以这样fd_set rdfds; /* 先申明一个 fd_set 集合来保存我们要检测的 socket描述符 */struct timeval tv; /* 申明一个时间变量来保存时间 */int ret; /* 保存返回值 */FD_ZERO(rdfds); /* 用select函数之前先把集合清零 */FD_SET(socket, rdfds); /* 把要检测的描述符socket加入到集合里 */tv.tv_sec 1;tv.tv_usec 500000; /* 设置select等待的最大时间为1秒加500毫秒 */ret select(socket 1, rdfds, NULL, NULL, tv); /* 检测我们上面设置到集合rdfds里的描述符是否有可读信息 */if(ret 0) perror(select);/* 这说明select函数出错 */else if(ret 0) printf(超时\n); /* 说明在我们设定的时间值1秒加500毫秒的时间内socket的状态没有发生变化 */else { /* 说明等待时间还未到1秒加500毫秒socket的状态发生了变化 */printf(ret%d\n, ret); /* ret这个返回值记录了发生状态变化的描述符的数目由于我们只监视了socket这一个描述符所以这里一定ret1如果同时有多个描述符发生变化返回的就是描述符的总和了 *//* 这里我们就应该从socket这个描述符里读取数据了因为select函数已经告诉我们这个描述符里有数据可读 */if(FD_ISSET(socket, rdfds)) { /* 先判断一下socket这外被监视的描述符是否真的变成可读的了 *//* 读取socket描述符里的数据 */recv(...);}}注意select函数的第一个参数是所有加入集合的描述符值的最大那个值还要加1。比如我们创建了3个描述符int sa, sb, sc;sa socket(...); /* 分别创建3个描述符并连接到服务器上 */connect(sa,...);sb socket(...);connect(sb,...);sc socket(...);connect(sc,...);FD_SET(sa, rdfds);/* 分别把3个描述符加入读监视集合里去 */FD_SET(sb, rdfds);FD_SET(sc, rdfds);在使用select函数之前一定要找到3个描述符中的最大值是哪个我们一般定义一个变量来保存最大值取得最大socket值如下int maxfd 0;if(sa maxfd) maxfd sa;if(sb maxfd) maxfd sb;if(sc maxfd) maxfd sc;然后调用select函数ret select(maxfd 1, rdfds, NULL, NULL, tv); /* 注意是最大值还要加1 */同样的道理如果我们要检测用户是否按了键盘进行输入我们就应该把标准输入0这个描述符放到select里来检测如下FD_ZERO(rdfds);FD_SET(0, rdfds);tv.tv_sec 1;tv.tv_usec 0;ret select(1, rdfds, NULL, NULL, tv); /* 注意是最大值还要加1 */if(ret 0) perror(select);/* 出错 */else if(ret 0) printf(超时\n); /* 在我们设定的时间tv内用户没有按键盘 */else { /* 用户有按键盘要读取用户的输入 */scanf(%s, buf);}select中需要几个fd_set结构的参数用来指定你所关心的socket。 下面四个宏被定义用来使操作fd_set结构更简单 FD_CLR(s,   *set)   从fd_set结构set中删掉s指明的套接字   FD_ISSET(s,   *set)   判断套接字s是否在set中返回非0则证明s在set中。反之不在。 这是判断socket是否有数据可读/可写用的或者说相应的文件描述符的状态是否更改。FD_SET(s,   *set)   把套接字s加入到set中 FD_ZERO(*set)   初始化set,全置0
http://www.sadfv.cn/news/22274/

相关文章:

  • 大华天途建设集团网站北京百度推广电话
  • 网站视频上传怎么做网站设计建设介绍
  • 网站的策划做推广wordpress 全景图插件
  • 网站的销售怎么做深圳网页制作培训班
  • 比较好的摄影网站景德镇做网站的公司
  • 淘宝关键词排名怎么查百度seo手机
  • 网站建设哪家更专业长沙县星沙人才招聘网
  • 电子商务网站建设与规划总结wordpress临时关闭
  • 可以建网站网站开发资料
  • vs2010网站开发教程wordpress 支付宝
  • 弄个做网站公司a站下载
  • 网站换空间怎么换pdf怎么做电子书下载网站
  • 企业邮箱多少钱一年网站建设 seo模块
  • 毕节城乡建设厅网站国外外贸平台有哪些
  • 网站内容与功能设计与实现的网站开发代做
  • 做网站有哪些项目竞价排名软件
  • 网站极简设计二次元风格wordpress模板
  • 网站怎样做优化推广网站广告有哪些
  • 通州手机网站建设广网站建设
  • 中英文双语的网站怎么建设vs做的网站源代码
  • 湖南网站建设 莫道生成图片的软件
  • 网站建设构造学习无锡找厂网站
  • 安徽哪家公司做网站比较好页面设计文献
  • 国外做文化的网站做网站销售工资怎么样
  • 中国大良网站建设wordpress 顺序
  • 如何美化网站怎么做网站优化
  • 网页微信二维码不能直接识别潍坊市网站优化
  • 有服务器做网站怎样建设公司的网站
  • 漯河网站建设兼职投资公司投资流程
  • 网站中的给我留言怎么做ipad网页制作软件