TCP保持活动断开连接时会出现什么套接字错误?

TCP保持活动断开连接时会出现什么套接字错误?,第1张

TCP保持活动断开连接时会出现什么套接字错误
  • select()
    如果为其选择的其中一个套接字发出了错误信号,则它本身不会返回错误。[实际上,API无法以这种方式指示每个套接字的错误,因为两个不同的套接字可能在的一次调用中就各自获取挂起的错误
    select()
    。哪一个会
    select()
    回来?]
  • 在循环的每次迭代之后
    select()
    ,您改而使用FD_ISSET宏
    read()
    在每个标记为可读的套接字上尝试。
  • 每当套接字设置了未决的错误集时,都会发信号通知其读取事件(和写入事件)并
    select()
    返回,从而使您可以立即拾取由于保持活动状态而导致的超时错误。请注意,选择标记要读取的套接字并不表示有数据要读取,只是读取尝试不会被阻止。如果套接字有未决错误要检索,则读取不会阻塞。无论
    read(2)
    write(2)
    第一甚至试图以处理任何数据之前检索套接字上任何挂起的错误。

当对O_NONBLOCK清除的输入函数的调用不会阻塞时,无论该函数是否成功传输数据,都应认为描述符已准备就绪,可以读取。(该函数可能返回数据,文件结尾指示或一个错误,表明该文件已被阻止,并且在每种情况下,描述符都应视为可以读取。)[
POSIX:select() ]

  • 最后,返回什么错误?至关重要的是,这取决于保持连接失败的方式。
    ETIMEDOUT
    如果另一端完全消失,您会得到的。如果发生数据包传递错误,您将转而通过(因此,如果保持活动的数据包收到ICMP错误回复,例如“主机不可达”,则将已
    EHOSTUNREACH
    传递)。[有关这些情况的更多详细信息,请参见Stevens,“ Unix网络编程,第1卷”。]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5012364.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存