2013-03-20 89 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);