为套接字操作设置超时

新手上路,请多包涵

当我创建套接字时:

 Socket socket = new Socket(ipAddress, port);

它抛出异常,这没关系,因为 IP 地址不可用。 (测试变量 String ipAddress = "192.168.0.3"int port = 300 。)

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

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

原文由 Jennifer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 364
1 个回答

请改用 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 - 套接字地址

timeout - 以毫秒为单位的超时值。

投掷:

IOException - 如果在连接过程中发生错误

SocketTimeoutException - 如果连接前超时

IllegalBlockingModeException - 如果这个套接字有关联的通道,并且通道处于非阻塞模式

IllegalArgumentException - 如果端点为空或者是此套接字不支持的 SocketAddress 子类

从: 1.4

原文由 aioobe 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题