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