当前位置: 首页 > 面试题库 >

Java Setting a timeout for socket operations

汪学真
2023-03-14
问题内容

创建套接字时:

Socket socket = new Socket(ipAddress, port);

由于IP地址不可用,它会引发一个异常,这是可以的。(测试变量where String ipAddress = "192.168.0.3"int port = 300。)

问题是:如何将该套接字设置为超时?

创建套接字时,如何减少UnknownHostException获取套接字并使套接字超时之前的时间?


问题答案:

使用Socket()构造函数和connect(SocketAddress endpoint, int timeout)方法代替。

在你的情况下,它将类似于:

Socket socket = new Socket();
socket.connect(new InetSocketAddress(ipAddress, port), 1000);

引用文档

connect

public void connect(SocketAddress endpoint, int timeout) throws IOException

使用指定的超时值将此套接字连接到服务器。零超时被解释为无限超时。然后,连接将被阻塞,直到建立或发生错误。

参数:

endpoint-SocketAddress-
timeout要使用的超时值,以毫秒为单位。

抛出:

IOException-如果在连接过程中发生错误
SocketTimeoutException-如果超时在连接之前到期
IllegalBlockingModeException-如果此套接字具有关联的通道,并且该通道处于非阻塞模式
IllegalArgumentException-如果端点为null或此套接字不支持SocketAddress子类



 类似资料:

相关阅读

相关文章

相关问答