我可以将字节写入编码后的输出流,但是无法刷新该流。我没有关闭它,在遇到此错误后在流上调用socket.isConnected时,套接字返回true。为什么会发生这种情况?
我试图以多种不同的方式写入字节数组,并在套接字上调用keepAlive(),以迫使流保持打开状态。
byte[] fullMessage = //contents of my array
System.out.println("SENDING");
os = CodedOutputStream.newInstance(ss.getOutputStream());
for(int i = 0; i < fullMessage.length; i++){
os.write(fullMessage[i]);
//System.out.println("SPACE LEFT: " + os.spaceLeft());
}
System.out.println("SIZE OF SENT MESSSAGE: " + os.getTotalBytesWritten());
System.out.println("FLUSHING");
try{
System.out.println("CONNECTED?: "+ss.isConnected());
os.flush();
ss.getOutputStream().flush(); //ss is my socket
}
catch(IOException e){
System.out.println(e.getMessage());
}
预期结果应该是没有消息的刷新,始终会产生: 对等方重置连接:套接字写入错误