JAVA отловить timeout при соединении tcp

Получаю данные от устройства по tcp, устройство подключено по wi-fi периодически происходит потеря данных и программа зависает на данном этапе, как я могу отловить простой программы и перезапустить метод? думал о каком-то таймере, но пока не знаю куда его впихнуть если thread то тоже не очень подходит, мне нужно чтоб программа не продолжалась пока я не получу ответ, как быть?

            try {
                clientSocket = new Socket(ip, port);
                in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                out = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));

            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
                System.out.println("ERROR: " + e1);

                
            }
            String word = null;

            try {
                word = in.readLine();
                rs = word.replaceAll("[^0-9?!\\.]", "");
                System.out.println("wordrs: " + rs);
                success(rs);
            } catch (IOException e2) {
                // TODO Auto-generated catch block
                e2.printStackTrace();
                System.out.println("ERROR: " + e);
            
            }
            System.out.println("word: " + word);
        }
    });

    return rs;

Ответы (0 шт):