首页 > 解决方案 > CodedOutputStream .flush() 导致连接被对等方重置:套接字写入错误

问题描述

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

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

标签: javasocketsserversocketoutputstream

解决方案


推荐阅读