2017-06-07 10 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

良い点。次に、2つのtry-with-resourcesステートメントをネストすることができます。 –

+0

ありがとうございました。私はこれについてもっと考えていたはずです! –

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

設定したタイムアウトは、接続後に設定できない接続タイムアウトです。 –

関連する問題