SSLSocket接收和发送请求而不会阻塞线程

时间:2018-10-16 04:04:11

标签: java server buffer inputstream sslsocketfactory

我正在尝试从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接收数据,然后在收到响应后将数据发送回去。

0 个答案:

没有答案