0

我正在尝试从 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;
}

循环永远不会结束,导致线程被卡住,即使循环结束,程序也会在这之后返回,导致程序结束。我需要知道如何将其设置为 24/7 接收数据,然后在收到响应后发回数据。

4

0 回答 0