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

时间:2013-03-20 08:56:35

标签: java android sockets

Socket类文档是here

在我的代码atm中,我使用了类似这样的构造函数:

Socket m_Socket = new Socket(m_Address, m_Port);

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

尝试

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