Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ObjectOutputStream不发送数据_Java_Sockets_Networking_Stream_Objectoutputstream - Fatal编程技术网

Java ObjectOutputStream不发送数据

Java ObjectOutputStream不发送数据,java,sockets,networking,stream,objectoutputstream,Java,Sockets,Networking,Stream,Objectoutputstream,客户端代码: try { Socket socket = new Socket(ip, port); OutputStream output = socket.getOutputStream(); ObjectOutputStream out = new ObjectOutputStream(output); InputStream input = socket.getInputStream();

客户端代码:

try {
            Socket socket = new Socket(ip, port);
            OutputStream output = socket.getOutputStream();
            ObjectOutputStream out = new ObjectOutputStream(output);
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            out.writeByte(1);
            FileHandler fh = (FileHandler) in.readObject();
            //processing stuff
            out.flush();
            out.close();
            output.flush();
            output.close();
            input.close();
            in.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
服务器代码:

        try {
            ServerSocket server = new ServerSocket(port);
            Socket socket = server.accept();
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            int type = in.readByte();
            //processing stuff (which includes closing the streams and sending FileHandler object)
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

服务器从不接收字节。它只是等待来自客户机的字节,它永远不会出现。我不知道为什么它没有发送或接收。非常感谢您的帮助。

如果我不得不猜测,那是因为在您的客户机中,您阻止了.readObject()中的
等待服务器向您发送内容,因此从不刷新输出流,因此。。。没有任何东西被发送


刷新输出流后将读取移动到。

如果我不得不猜测,那是因为在客户端中,您在.readObject()中阻塞了
等待服务器向您发送内容,因此从不刷新输出流,因此。。。没有任何东西被发送


刷新输出流后,将读取移动到。

尝试使用writeObject和readObject方法。还要将整数而不是int写入流。请在继续之前阅读

为了你的问题


问候

尝试使用writeObject和readObject方法。还要将整数而不是int写入流。请在继续之前阅读

为了你的问题


问候

也不要刷新或关闭输出。如果包装一个OutputStream,调用close或flush或close,它将依次刷新包含的流。您不需要保存对输出或输入的引用。Close也应该放在finally子句中。如果抛出异常,您仍然需要确保流的Close()发生。当我在发送字节后刷新时,服务器会收到一个连接重置错误。@JonMannerberg-否,当您关闭连接时会收到该错误。在完成读写之前不要关闭它。也不要刷新或关闭输出。如果包装一个OutputStream,调用close或flush或close,它将依次刷新包含的流。您不需要保存对输出或输入的引用。Close也应该放在finally子句中。如果抛出异常,您仍然需要确保流的Close()发生。当我在发送字节后刷新时,服务器会收到一个连接重置错误。@JonMannerberg-否,当您关闭连接时会收到该错误。在完成阅读和写作之前不要关闭它。