2017-06-07 1 views
0

Je souhaite définir un délai d'attente de connexion de socket. Je sais que je peux le mettre en utilisant la méthode de connexion, mais voici mon code:Java: comment définir un délai d'expiration de socket avec un "try with resources"

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

Quel est le problème? Ne donne-t-il pas la sortie désirée? Est-ce qu'il lance une erreur? – PrestonM

+0

Le problème est que je ne peux pas utiliser getInputStream/getOutputStream jusqu'à ce que je connecte le socket –

Répondre

0

Ce n'est pas vraiment clair de votre question où vous êtes coincé, mais vous pouvez simplement continuer à utiliser la méthode 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

Comment puis-je utiliser getInputStream/getOutputStream si je dois encore établir la connexion? –

+0

Bon point. Vous pouvez ensuite imbriquer deux instructions try-with-resources. –

+0

Merci, évidemment, cela fonctionne. J'aurais dû y penser davantage! –

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

Le délai d'attente que vous définissez est le délai de connexion que vous ne pouvez pas définir après la connexion. –