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;
}

Цикл никогда не заканчивается, вызывая зависание потока, и даже если цикл заканчивается, программа просто вернется после этого, что приведет к завершению программы. Мне нужно знать, как я могу настроить его на получение данных круглосуточно, а затем отправлять данные обратно после получения ответа.

0 ответов

Другие вопросы по тегам