0

Socket 类文档在这里

在我的代码 atm 中,我使用如下构造函数:

Socket m_Socket = new Socket(m_Address, m_Port);

m_Address是一个 InetAddress 并且m_Port是一个 int。

当此行运行时,无法创建套接字,应用程序会等待 3 秒左右,然后抛出 IOException。

我可以看到没有构造函数同时接受,InetAddressint另一个超时。我需要等待 250 毫秒,而不是像现在这样约 3 秒。这意味着我需要在套接字上设置超时,但我找不到任何方法来做到这一点。我知道我们有方法,但需要在类的实例上调用它。我可以通过这样做来实例化一个新的 Socket: ,但是我需要设置 InetAddress 和端口,而 Socket 类似乎没有任何方法可以做到这一点(构造函数除外)。intsetSoTimeout(timeout)Socketm_Socket = new Socket();

如何在实际尝试设置套接字之前设置超时?

4

2 回答 2

2

您可以使用默认构造函数创建一个未连接的 Socket,然后使用超时调用 connect()。

Socket m_Socket = new Socket();
m_Socket.connect(addr,1000);
于 2013-03-20T09:07:12.910 回答
2

尝试

    Socket sock  = new Socket();
    sock.connect(new InetSocketAddress(m_Address, m_Port), 250);
于 2013-03-20T09:12:01.927 回答