2017-06-07 58 views
0

我想設置套接字連接超時。我知道我可以使用connect方法對其進行設置,但是這是我的代碼:Java:如何使用「嘗試使用資源」設置套接字超時

try(Socket socket = new Socket(InetAddress.getByName(ip), port); 
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); 
    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8")), true)){ 
+0

什麼問題?它沒有提供期望的輸出嗎?它拋出一個錯誤? – PrestonM

+0

問題是,我不能使用getInputStream/getOutputStream,直到我連接套接字 –

回答

0

這不是從你的問題,你被卡住是很清楚,但你可以繼續使用connect方法:

int timeout = 25000; 
try (Socket socket = new Socket()) { 
    socket.connect(new InetSocketAddress("abc", 123), timeout); 
    try (BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8")); 
     PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8")), true)) { 

    } 
} 
+0

如果我仍然需要建立連接,我該如何使用getInputStream/getOutputStream? –

+0

好點。然後,您可以嵌套兩個試用資源語句。 –

+0

非常感謝它的工作。我應該更多地考慮這個! –

0
try(Socket socket = new Socket(InetAddress.getByName(ip), port)) { 
    socket.connect(adress, timeout); 
} catch (Throwable t) { 
    handleException(t); 
} 
+0

您設置的超時是連接超時,您不能在連接後設置它。 –