小编典典

套接字的连接和读取超时有什么区别?

all

3个问题:

  1. 套接字的 连接读取 超时有什么区别?

  2. 连接 超时设置为“无限”是什么意思?在什么情况下它可以保持在不定式循环中?什么可以触发无限循环死亡?

  3. 读取 超时设置为“无限”是什么意思?在什么情况下它可以保持在不定式循环中?什么可以触发无限循环死亡?


阅读 59

收藏
2022-06-20

共1个答案

小编典典

  1. 套接字的连接和读取超时有什么区别?

连接超时是建立初始连接的超时时间;即完成TCP连接握手。读取超时是等待读取数据1的超时。如果服务器(或网络)在客户端进行套接字调用后的
秒内未能传递任何数据read,则会引发读取超时错误。

  1. 连接超时设置为“无限”是什么意思?在什么情况下它可以保持在不定式循环中?什么可以触发无限循环死亡?

这意味着连接尝试可能会永远阻塞。没有无限循环,但连接尝试可以被另一个关闭套接字的线程解除阻塞。(Thread.interrupt()打电话也可以解决问题……不确定。)

  1. 读取超时设置为“无限”是什么意思?什么情况下可以无限循环?什么可以触发无限循环结束?

这意味着read对套接字流的调用可能会永远阻塞。再一次没有无限循环,但read可以通过Thread.interrupt()调用、关闭套接字以及(当然)另一端发送数据或关闭连接来解除阻塞。


1 - 它不是......正如一位评论者所认为的......套接字可以打开或空闲多长时间的超时。

2022-06-20