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

岫岩网站建设无极县最新招聘信息

岫岩网站建设,无极县最新招聘信息,韩国女足出线了吗,公司标志图片logo如果处理的是面向连接的网络服务#xff08;SOCK_STREAM或SOCK_SEQPACKET#xff09;#xff0c;在开始交换数据以前#xff0c;需要在请求服务的进程套接字#xff08;客户端#xff09;和提供服务的进程套接字#xff08;服务器#xff09;之间建立一个连接。客户端可…如果处理的是面向连接的网络服务SOCK_STREAM或SOCK_SEQPACKET在开始交换数据以前需要在请求服务的进程套接字客户端和提供服务的进程套接字服务器之间建立一个连接。客户端可以用connect建立一个连接。 #include sys/socket.h int connect(int sockfd, const struct sockaddr *addr, socklen_t len); 返回值若成功则返回0出错则返回-1 在connect中所指定的地址是想与之通信的服务器地址。如果sockfd没有绑定到一个地址connect会给调用者绑定一个默认地址。 当连接一个服务器时出于一些原因连接可能失败。要连接的机器必须开启并且正在运行服务器必须绑定到一个想与之连接的地址并且在服务器的等待连接队列中应有足够的空间。因此应用程序必须能够处理connect返回的错误这些错误可能由一些瞬时变化条件引起。 实例 程序清单16-2显示了一种如何处理瞬时connect错误的方法。这在一个负载很重的服务器上很有可能发生。 #include apue.h #include sys/socket.h#define MAXSLEEP 128int connect_retry(int sockfd, const struct sockaddr *addr, socklen_t len) {int nsec;/** Try to connect with exponential backoff.*/for(nsec 1; nsec MAXSLEEP; nsec 1){if(connect(sockfd, addr, alen) 0){/** Connection accepted. */return(0);}/** Delay before trying again.*/if(nsec MAXSEELP/2)sleep(nsec);}return(-1); } 这个函数使用了名为指数补偿exponential backoff的算法。如果调用connect失败进程就休眠一小段时间后再尝试每循环一次增加每次尝试的延迟直到最大延迟为2分钟。 如果套接字描述符处于非阻塞模式下那么在连接不能马上建立时connect将会返回-1并且将errno设为特殊的错误码EINPROGRESS。应用程序可以使用poll或select来判断文件描述符何时可写。如果可写连接完成。 函数connect还可以用于无连接的网络服务SOCK_DGRAM。这看起来有点矛盾实际上却是一个不错的选择。如果在SOCK_DGRAM套接字上调用connect所有发送报文的目标地址设为connect调用中所指定的地址这样每次传送报文时就不需要再提供地址。另外仅能接收来自指定地址的报文。 服务器调用listen来宣告可以接受连接请求。 #include sys/socket.h int listen(int sockfd, int backlog); 返回值若成功则返回0出错则返回-1 参数backlog提供了一个提示用于表示该进程所要入队的连接请求数量。其实际值由系统决定但上限由sys/socket.h中SOMAXCONN指定。 一旦队列满系统会拒绝多余连接请求所以backlog的值应该基于服务器期望负载和接受连接请求与启动服务的处理能力来选择。 一旦服务器调用了listen套接字就能接收连接请求。使用函数accept获得连接请求并建立连接。 #include sys/socket.h int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len); 返回值若成功则返回文件套接字描述符出错则返回-1 函数accept所返回的文件描述符是套接字描述符该描述符连接到调用connect的客户端。这个新的套接字描述符和原始套接字sockfd具有相同的套接字类型和地址族。传给accept的原始套接字没有关联到这个连接而是继续保持可用状态并接受其他连接请求。 如果不关心客户端标识可以将参数addr和len设为NULL否则在调用accept之前应将参数addr设为足够大的缓冲区来存放地址并且将len设为指向代表这个缓冲区大小的整数的指针。返回时accept会在缓冲区填充客户端的地址并且更新指针len所指向的整数为该地址的大小。 如果没有连接请求等待处理accept会阻塞直到一个请求到来。如果sockfd处于非阻塞模式accept会返回-1并将errno设置为EAGAIN或EWOULDBLOCK。 如果服务器调用accept并且当前没有连接请求服务器会阻塞直到一个请求到来。另外服务器可以使用poll或select来等待一个请求的到来。在这种情况下一个带等待处理的连接请求套接字会以可读的方式出现。 实例 程序清单16-3显示了一个服务器进程用以分配和初始化套接字的函数。 程序清单16-3 服务器初始化套接字端点  #include apue.h #include errno.h #include sys/socket.hint initserver(int type, const struct sockaddr *addr, socklen_t alen, int qlen) {int fd;int err 0;if((fd socket(addr-sa_family, type, 0)) 0)return(-1);if(bind(fd, addr, alen) 0){err errno;goto errout;}if(type SOCK_STREAM || type SOCK_SEQPACKET){if(listen(fd, qlen) 0){err errno;goto errout; }}return(fd);errout:close(fd);errno err;return(-1); }   本篇博文内容摘自《UNIX环境高级编程》第2版仅作个人学习记录所用。关于本书可参考http://www.apuebook.com/。
http://www.pierceye.com/news/157824/

相关文章:

  • 怎么修改网站信息同ip网站做301
  • 松江品划网络做网站logo设计网页
  • 重庆博达建设集团股份有限公司网站徐州建设企业网站
  • 有没有专门做老年婚介的网站东营会计信息网官网
  • 鞍山怎么做平台软件汕头网站时优化
  • 邹城建网站深圳装修公司排行榜
  • 泊头网站优化WordPress如何添加cnzz
  • dz论坛网站创建页面wap网站建设方案 pdf
  • 网站建设项目报告总结报告seo关于网站搜索排名关键词的标准评定
  • 东莞电商网站建设wordpress注册验证邮箱
  • 网站建设名中国建设劳动学会是假网站吗
  • 一个优秀的个人网站百度极速版免费下载安装
  • 咋做211校徽加网站wordpress免费教程视频教程
  • 网站建设制作网络营销公司蛋糕店网站模板
  • a站网址东莞市网络seo推广价格
  • 莱州市双语网站seo白帽优化
  • 不忘初心网站建设深圳公租房官网
  • 网站点击率原因深圳做自适应网站制作
  • 上海个人建站小程序注册完成后如何制作
  • 微网站开发平台 开源大庆做网站公司
  • 长沙市住房和城乡建设局网站wordpress付费可见插件
  • 建设个人网站的参考网站及文献辽宁建设工程造价管理网站
  • 如何做360网站的排名新品发布会策划方案ppt
  • 网站后台登陆破解哪里有网站模板下载
  • 网站制作器软件下载建站备案
  • 网页模板下载网站站长素材音效网
  • 青岛网站建设要多少钱关键词优化是怎样收费的
  • 网站国际联网备案WordPress文章分页伪静态
  • 电子商务网站开发的任务书东莞seo关键词搜索关键词
  • 宁乡网站建设在哪小天才电话手表网站