CodedOutputStream .flush()导致对等方重置连接:套接字写入错误

时间:2019-08-05 16:16:44

标签: java sockets serversocket outputstream

我可以将字节写入编码后的输出流,但是无法刷新该流。我没有关闭它,在遇到此错误后在流上调用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());
            }

预期结果应该是没有消息的刷新,始终会产生: 对等方重置连接:套接字写入错误

0 个答案:

没有答案