在重新连接时,需要对输出流和输入流进行重新设置,避免出现读取缓存的情况。可以在重新连接时先关闭原来的流,再重新创建新的流进行通信。具体实现可以参考以下示例代码:
private void reconnect() {
try {
//关闭原来的socket
socket.close();
//重新创建socket
socket = new Socket(ip, port);
//重新设置输出流
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(outputStream));
//发送数据
printWriter.print("hello");
printWriter.flush();
//重新设置输入流
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String response = bufferedReader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
在上面的代码中,我们在重新连接时,先关闭原来的socket,然后重新创建新的socket。接着,我们重新设置了输出流和输入流,避免了出现读取缓存的情况。最后我们可以通过新的输入流读取服务器端的响应。