我正在尝试自己学习 Socket。我对 Oracle 网站上的以下文字有点困惑。我对此有一些疑问。提前感谢您提供任何明确的解释。
setSoTimeout
public void setSoTimeout(int timeout) 抛出 SocketException
使用指定的超时启用/禁用 SO_TIMEOUT,以毫秒为单位。将此选项设置为非零超时,与此 Socket 关联的
read()
调用InputStream
将仅阻塞此时间量。如果超时到期,java.net.SocketTimeoutException
则引发 a,尽管 Socket 仍然有效。必须在进入阻塞操作之前启用该选项才能生效。超时必须 > 0。超时为零被解释为无限超时。
- SO_TIMEOUT 是什么?
套接字是连接的端点。如果我说
mySocket.setSoTimeout(2000);
这是否意味着我在 2000 毫秒内阻止从服务器/客户端读取此套接字的任何输入,并且在此时间之后套接字已准备好读取数据?
超时过期是什么意思?
在阻止操作之前必须启用的选项是什么?
无限超时意味着套接字不再读取?