当前位置:  技术问答>linux和unix

一个有关服务端非阻塞socket的疑问

    来源: 互联网  发布时间:2016-02-21

    本文导语:  在网上看到很多有关非阻塞socket的例子。但是主要有两种不同。 一种如下(省略若干ip和端口设置的语句): fd = socket(AF_INET, SO_STREAM, 0); setnonblock(fd); bind(fd, (struct sockaddr *)&addr, 0); listen(fd, 15); client_fd = accept(fd, N...

在网上看到很多有关非阻塞socket的例子。但是主要有两种不同。
一种如下(省略若干ip和端口设置的语句):
fd = socket(AF_INET, SO_STREAM, 0);
setnonblock(fd);
bind(fd, (struct sockaddr *)&addr, 0);
listen(fd, 15);
client_fd = accept(fd, NULL, NULL);
setnonblock(client_fd);

另外一种是
fd = socket(AF_INET, SO_STREAM, 0);
bind(fd, (struct sockaddr *)&addr, 0);
listen(fd, 15);
client_fd = accept(fd, NULL, NULL);
setnonblock(client_fd);

这两种的区别很明显,前者把监听套接字也设置成为了非阻塞,而后者没有。这两种在具体的使用中有什么不同。
因为我也看到有些资料(似乎是stevens的书,具体记不太清楚了),上面说3次握手会在accept之前完成,那么accept仅仅是返回一个客户端的套接字。那么到底要不要把监听套接字设置为非阻塞的

|
监听套接子你也可以把看成和数据传输套接字一样,只是接受到一数据是tcp建立连接的信息而已.牵扯不到3此握手,三次握手在逻辑上是更低层一点的东西.
至于要不要把它设置成非阻塞方式,那要看你程序的设计逻辑了.

|
看情况而定,三次握手也可能阻塞啊。

|
设置成 nonblock 是为了防止accept的等待时间太长,75秒?

如果你希望服务器仅仅注意检查是否有客户在等待连接,有就接受连接,否则就继续做其他事情,则可以通过将Socket设置为非阻塞方式来实现

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教有关socket的问题,并求telnetd的c源码
  • 有关Java Socket 问题
  • 有关redhat下socket编程
  • 请教一个有关socket方面的问题
  • 在编译有关socket的例子时老有这些错误,是什么一回事
  • 有关SOCKET的问题?在线等!!
  • 有关socket通信包大小的问题
  • 一个奇怪的问题,有关Socket的。
  • 求有关socket等通讯方面的源代码,以供参考,希望大家帮帮我!谢谢
  • ​有关Docker的八个令人难以置信的事实
  • 有关内码转换(跟HttpServletRequest有关)
  • 求有关png图像处理的libpng库的有关中文资料
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • 求教有关smartupload的问题,有关就给分!!
  • 有关KDevelop-3.0.4-0.1.i386.rpm的有关软件包
  • 有关在sco unix5.0.4下有关网卡设置的问题(非常急,高分相送)
  • 有关snmp的一个很菜,但是困扰了我很久的问题,有关工作原理的,望大家赐教
  • 有关KDevelop编程的资料
  • 有关集群与数据同步
  • 请教有关英文简历方面的词句!
  • 有关报表打印(在JAVA,WEB下应用)急用!
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • 有关cocoon的问题??
  • 有关jbuilder
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 有关J2ME的帮助文档!
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 在哪里可以弄到有关tomcat配置方面的资料?
  • Helper! 有关Jbuilder使用问题???
  • 有关swing的问题,请高手回答


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3