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

一个未连接的客户端socket套接字在select处的奇怪行为

    来源: 互联网  发布时间:2016-06-29

    本文导语:  观察实际程序得到以下现象: 一个未连接的客户端socket套接字在select处会导致select认为此套接口缓冲区有数据,进而解除阻塞向下执行。而在read的时候会报错:一个未连接的套接字。 请问:“一个未连接的客户端s...

观察实际程序得到以下现象:

一个未连接的客户端socket套接字在select处会导致select认为此套接口缓冲区有数据,进而解除阻塞向下执行。而在read的时候会报错:一个未连接的套接字。

请问:“一个未连接的客户端socket套接字在select处会导致select认为此套接口缓冲区有数据,进而解除阻塞向下执行。”
1.这个是为什么?
2.能避免select因套接字未连接而向下执行吗?谢谢

|

1. 按照select的定义,此时select应该返回

     A descriptor is considered ready for reading when a call  to
     an  input  function  with  O_NONBLOCK clear would not block,
     whether or not the function  would  transfer  data  success-
     fully. (The function might return data, an end-of-file indi-
     cation, or an error other than one  indicating  that  it  is
     blocked,  and  in each of these cases the descriptor will be
     considered ready for reading.)

2. 因为上述原因不能。

|
至于说
“一个未连接的客户端socket套接字在select处会导致select认为此套接口缓冲区有数据,进而解除阻塞向下执行。” 
这个理解时错误的,不是“有数据”,是“读就绪(ready for reading)”, 简单地说,就是read/recv/recvfrom不会阻塞。
在这一点上俺不得不赞一下Solaris的文档,“详尽,准确”,上面那段英文就是Solaris文档里的。

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












  • 相关文章推荐
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • (腾讯面试)服务器如果和客户端在连接时假如连接被突然切断,服务器会立即感知到么
  • Linux 代理 一个客户端来就创建一个连接
  • linux端是服务器,客户端连接后,有时并不知道客户端断开,怎么侦测?
  • socket怎样限制客户端连接数?
  • 已和客户端连接建立的socket在客户端CTRL-C后怎么在服务器端捕捉这个错误?
  • 哪位给看一下 为什么连接失败 errno=111 connect 调用失败(这是客户端已tcp方式连接)
  • 请问诸位高手:如何在服务器上得到正在连接的客户端IP??
  • 服务器与客户端建立socket连接,如何获得端口号.谢谢
  • windows客户端telnet 与linux qmail连接问题 iis7站长之家
  • 创建一个获取客户端连接IP地址的函数
  • 连接LINUX服务器的客户端一般用什么
  • windows客户端telnet 与linux qmail连接问题
  • 为什么客户端断开连接后,read的返回值是0?
  • SOCKET同时接收客户端连接问题
  • 如何将客户端上传的ACCESS数据库用ODBC连接,即动态ODBC,急盼!
  • Window客户端通过ADO是否能够连接和操作Unix平台下的Oracle数据库?
  • unix socket编程的问题--服务器突然断掉,客户端如何察觉并发动请求重新连接
  • 在长连接中,linux客户端如何处理服务器端不定时发来的信息
  • 客户端程序退出后连接仍然存在,为什么?
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 什么是socket的长连接,以及如何实现长连接,长连接和短连接有什么区别?
  • 如何在windows上远程连接centOS桌面
  • 建立长连接的SOCET通讯后,如何检查长连接的有效性,如何获知连接状态
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • Oracle 表连接方式(内连接/外连接/自连接) 详解
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 关于inetd。我做了一个测试程序,想计算ftp最多能有多少了连接,我发现当连接到1020次就不可以连接了,哪位大侠知道如何做才能将连接数量增加至10000呢??
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • 哪位给解释一下长连接和短连接的区别?
  • mysql jdbc连接mysql数据库步骤及常见参数详解


  • 站内导航:


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

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

    浙ICP备11055608号-3