繁体   English   中英

在尝试连接之前在Socket上设置超时

[英]Set timeout on Socket before it tries to connect

Socket类文档在这里

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

Socket m_Socket = new Socket(m_Address, m_Port);

m_Address是一个InetAddress,而m_Port是一个int。

当此行运行并且无法建立套接字时,应用程序将等待3秒钟左右,然后引发IOException。

我可以看到没有构造函数同时使用InetAddressint 另一个int进行超时。 我需要等待250毫秒,而不是现在的3秒钟。 这意味着我需要在套接字上设置超时,但是找不到任何方法来执行此操作。 我知道我们有方法setSoTimeout(timeout) ,但是需要在Socket类的实例上调用它。 我可以通过执行以下操作实例化一个新的Socket: m_Socket = new Socket(); ,但随后我需要设置InetAddress和端口,并且Socket类似乎没有任何执行此操作的方法(构造函数除外)。

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

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

Socket m_Socket = new Socket();
m_Socket.connect(addr,1000);

尝试

    Socket sock  = new Socket();
    sock.connect(new InetSocketAddress(m_Address, m_Port), 250);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM