SSLSocket получает и отправляет запросы без блокировки потока
Я пытаюсь читать с сервера SSLSocket, мне нужно, чтобы клиент был открыт 24/7, Примечание. Я только делаю клиента, Сервер уже настроен, Я пытаюсь прочитать данные и отправить данные с сервера. Как бы то ни было, когда я пытаюсь прочитать данные, это блокирует мой текущий поток, и я не могу ничего сделать после этого, так как цикл никогда не заканчивается, и если я делаю цикл, который завершает, программа возвращается. Я хочу, чтобы он всегда был открыт и продолжал получать входящий запрос, а затем отправлять запрос обратно в соответствии с тем, что я получаю, это то, что у меня сейчас есть.
private SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
private SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(host, port);
private BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(sslsocket.getOutputStream()));
private InputStream is = sslsocket.getInputStream();
это глобальные переменные, которые я определил, и вот как я записываю данные на сервер
private void write_to_server(String date) throws IOException {
writer.write(date);
writer.flush();
}
и, наконец, вот как я получаю ответ, и именно здесь у меня проблема.
public String getResponse() throws IOException {
byte[] buffer = new byte[16384];
String a = "";
for (int b; ((b = is.read(buffer)) > 0); ) {
a = new String(buffer, 0, b, StandardCharsets.UTF_8);
Log(a);
}
return a;
}
Цикл никогда не заканчивается, вызывая зависание потока, и даже если цикл заканчивается, программа просто вернется после этого, что приведет к завершению программы. Мне нужно знать, как я могу настроить его на получение данных круглосуточно, а затем отправлять данные обратно после получения ответа.