3个问题:
套接字的连接和读取超时之间有什么区别?
连接超时设置为“无限”是什么意思?在什么情况下可以保持不定式循环?什么会触发无限循环死亡?
读取超时设置为“无限”是什么意思?在什么情况下可以保持不定式循环?什么会触发无限循环死亡?
最佳答案
1)套接字的连接和读取超时之间有什么区别?
连接超时是建立初始连接的超时;即完成TCP连接握手。读取超时是等待读取data1的超时。具体来说,如果服务器未能在最后一个字节之后发送字节秒,则将引发读取超时错误。
2)连接超时设置为“无限”是什么意思?在什么情况下可以保持不定式循环?什么会触发无限循环死亡?
这意味着连接尝试可能永远阻塞。没有无限循环,但是可以通过关闭套接字的另一个线程来阻止尝试连接。 (Thread.interrupt()
调用也可以解决问题……不确定。)
3)读取超时设置为“无限”是什么意思?它在什么情况下可以保持无限循环?什么会触发无限循环结束?
这意味着套接字流上对read
的调用可能永远阻塞。再一次没有无限循环,但是read
可以通过Thread.interrupt()
调用,关闭套接字以及(当然)另一端发送数据或关闭连接来解除阻塞。
1-不是……正如一个评论者所认为的……套接字可以打开或空闲多长时间。