Socket 关于设置Socket连接超时时间

1.关于Socket连接超时时间
参考链接:
https://www.iteye.com/blog/cuisuqiang-1725348

socket的读写是阻塞的,soTimeout是socket读写超时,而不是链接超时。

setSoTimeout  
public void setSoTimeout(int timeout)  
    throws SocketException启用/禁用带有指定超时值的 SO_TIMEOUT,以毫秒为单位。
    将此选项设为非零的超时值时,在与此 Socket 关联的 InputStream 上调用 read() 将只阻塞此时间长度。  
    如果超过超时值,将引发 java.net.SocketTimeoutException,虽然 Socket 仍旧有效。
    选项必须在进入阻塞操作前被启用才能生效。  
    超时值必须是 > 0 的数。超时值为 0 被解释为无穷大超时值。   
参数:  
timeout - 指定的以毫秒为单位的超时值。   
抛出:   
SocketException - 如果底层协议出现错误,例如 TCP 错误。  
从以下版本开始:   
JDK 1.1   
另请参见:  
getSoTimeout()  

2.TCP的三次握手四次挥手
https://blog.csdn.net/qq_38950316/article/details/81087809

https://www.iteye.com/blog/xiaoz5919-1685138

3.http连接超时keep-alive
https://www.cnblogs.com/pigpdong/p/10899792.html
Socket 关于设置Socket连接超时时间_第1张图片Socket 关于设置Socket连接超时时间_第2张图片
4.TCP的keep alive和HTTP的Keep-alive
参考链接:https://www.cnblogs.com/cswuyg/p/3653263.html
TCP的keep alive是检查当前TCP连接是否活着;HTTP的Keep-alive是要让一个TCP连接活久点。它们是不同层次的概念。
TCP keep alive的表现:
当一个连接“一段时间”没有数据通讯时,一方会发出一个心跳包(Keep Alive包),如果对方有回包则表明当前连接有效,继续监控。

你可能感兴趣的:(Android)