当我创建一个套接字时:
Socket socket = new Socket(ipAddress, port);
Run Code Online (Sandbox Code Playgroud)
它会引发异常,这是正常的,因为IP地址不可用.(测试变量where String ipAddress = "192.168.0.3"和int port = 300.)
问题是:如何将其设置为该套接字的超时?
当我创建套接字时,如何在UnknownHostException获得套接字并使套接字超时之前减少时间?
我正试图自己学习Socket.关注Oracle网站上的文字我有点困惑.我对此有一些疑问.提前感谢任何明确的解释.
setSoTimeout
public void setSoTimeout(int timeout)抛出SocketException
使用指定的超时启用/禁用SO_TIMEOUT,以毫秒为单位.如果将此选项设置为非零超时,
read()则InputStream与此Socket关联的调用将仅阻止这段时间.如果超时到期,java.net.SocketTimeoutException则会引发a,尽管Socket仍然有效.必须在进入阻止操作之前启用该选项才能生效.超时必须> 0.超时为零被解释为无限超时.
套接字是连接的端点.如果我说
mySocket.setSoTimeout(2000);
Run Code Online (Sandbox Code Playgroud)
这是否意味着我阻止从服务器/客户端读取此套接字的任何输入2000毫秒,在此之后套接字已准备好读取数据?
超时到期是什么意思?
在阻止操作之前必须启用哪个选项?
无限超时意味着套接字不再读取?