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

read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket?

    来源: 互联网  发布时间:2015-12-19

    本文导语:  read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket? 如果不是, 在程序中怎么判断是对方关闭了socket还是其它因素导致read到了0长度?? | 他如果用的是UDP,那可能返回...

read一个socket, 发现read到的长度是0, 是否一定代表对方调用了close关闭了socket?

如果不是, 在程序中怎么判断是对方关闭了socket还是其它因素导致read到了0长度??

|
他如果用的是UDP,那可能返回为0表示是一个空的数据报,所以不能根据返回0来判断是否出错。

|
UP
UDP和TCP处理是有区别的
TCP返回0至少可以肯定对方关闭了写方向的socket
UDP返回0是正常情况,不能据此判断对方关闭socket否;

返回0时肯定时出错了,此时需要根据errno和socket属性进行处理

|
在TCP模式下有两种情况,一种是收到了FIN的原语,另一种则是收到了RST原语。对应的操作可以参看下TCP/IP卷1,2,3

对于UDP,很有可能UDP的包错了。

|
read到0是关闭了,否则大于0,出错时小于0

|
read到0是关闭了,否则大于0,出错时小于0

|
read 会不会被设置成不阻塞的? 没有读到数据就返回了?我是菜鸟,请教大家

|
tcp的程序应该是根据返回为0判断的
对于 read(fd, buff, 0) 会返回0
或许它被调用时直接返回了,根本没去读取文件或socket,也谈不上读到socket了.
菜鸟回答,望大家指正:P

|
linux man page 说
if count is zero, read() returns zero and has no other results.
即它直接返回.不做其他动作

    
 
 

您可能感兴趣的文章:

  • 请教: read一个socket, read返回需要多长时间?
  • socket read返回问题
  • socket在read时出错,提示"No child processes"
  • socket中的疑问:read,write和send,recv的区别
  • [紧急求助]socket在read时提示Connection reset by peer错误
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • 在inter版solaris 8上编socket程序,在read时遇到错误,错误号14,用strerror()看不到错误描述,请解决,多谢!
  • socket.getInputStream().read(byteArray,position,lengh)是如何工作的???
  • Linux下怎么用read或recv函数完全接收socket发来的数据?
  • Connection reset by peer: JVM_recv in socket input stream read这个问题到底怎么解决??
  • java socket长连接中解决read阻塞的3个办法
  • socket程序中read字节个数与write字节个数不同
  • 调用read函数读取socket流时,为何返回值总是1
  • socket read阻塞:一个线程关闭另一个线程错误
  • ioctl中能不能调用generic_file_read呀?我一调用就不动了
  • 我的模块的READ没有被调用
  • CAT命令读取设备文件,驱动read函数被反复调用,为什么?
  • 高分求助有关利用Linux的系统调用read()实现
  • [Solaris/AIX] read()调用失败,errno为ECONNECTIONRESET,请点解一下大致会是一些什么原因?
  • 我在APPLET里调用JAVAMAIL发邮件,出现java.security.AccessControlException: access denied (java.util.PropertyPermission * read,write)的错误???
  • 内核态下进行read/write系统调用的问题
  • 我在一个字符设备写了一些方法,read,write等,我在用户层使用这些系统调用的时候怎么用到我这个字符设备驱动所定义的??
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 read():读取字条符
  • c/c++开源软件 iis7站长之家
  • java命名空间javax.swing类progressmonitorinputstream的类成员方法: read定义及介绍
  • if( (n=Readline( sockfd,line,MAXLINE) )==0)为什么服务器接收到客户FIN时,Read返回的是0。,既然FIN被读出来了,为什么Read返回的是0
  • java命名空间java.sql接口connection的类成员方法: transaction_read_uncommitted定义及介绍
  • 非阻塞打开设备文件,如果1秒read不到数据,想让read退出如何做?
  • java命名空间java.io类objectinputstream的类成员方法: readfully定义及介绍
  • linux 下的read命令重定向
  • java命名空间java.io类linenumberreader的类成员方法: read定义及介绍
  • 关于epoll ET模式read的一些问题
  • java命名空间java.io接口objectinput的类成员方法: read定义及介绍
  • cshell脚本中read的问题
  • java命名空间java.io类objectinputstream的类成员方法: read定义及介绍
  • 关于shell read命令
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_write定义及介绍
  • 请问 : read, 与recv 两个函数有什么区别啊?
  • java命名空间java.io类filterinputstream的类成员方法: read定义及介绍
  • 新手请教:while read中末尾的重定向表示什么意思?
  • java命名空间java.text类attributedcharacteriterator.attribute的类成员方法: reading定义及介绍
  • 关于read()的问题
  • java命名空间java.nio.channels类filechannel.mapmode的类成员方法: read_only定义及介绍
  • read 和write问题!


  • 站内导航:


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

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

    浙ICP备11055608号-3