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