2013-03-20 63 views
0

Socket类文档hereSocket的设置超时之前它会尝试连接

在我的代码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类的实例上调用它。我可以通过这样来实例化一个新的套接字:m_Socket = new Socket();,但是之后我需要设置InetAddress和端口,并且Socket类似乎没有任何方法来执行此操作(构造函数除外)。

如何设置超时之前,它实际上试图设置插座?

+0

http://stackoverflow.com/questions/4969760/set-timeout-for-socket – infiniteRefactor 2013-03-20 09:09:00

+0

默认的连接超时是过了一分钟,不是3秒,250毫秒是一个荒谬的短连接超时值。 – EJP 2013-03-20 09:09:26

回答

2

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

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

非常感谢!必须首先将我的InetAddress转换为SocketAddress。 – eightx2 2013-03-20 09:14:51

2

尝试

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