Search code examples
javasocketstry-with-resources

Java: How to set a socket timeout with a "try with resources"


I want to set a socket connection timeout. I know that I can set it using the connect method but this is my code:

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)){

Solution

  • It's not really clear from your question where you are stuck, but you can just keep using the connect method:

    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)) {
    
        }
    }