ObjectOutputStream不发送数据

时间:2012-02-01 06:00:54

标签: 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();
            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();
        }

服务器永远不会收到该字节。它只是等待来自客户端的字节,它永远不会到来。我不确定为什么它不发送或收到。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

如果我不得不猜测,那是因为在你的客户端阻止in.readObject();等待服务器向你发送一些东西,从而永远不会刷新输出流......所以没有任何东西被发送。

在刷新输出流后,将读取移至

答案 1 :(得分:1)

尝试使用writeObject和readObject方法。还要在流中写入Integer而不是int。在继续之前阅读this really good lecture

This is also a good lecture解决您的问题。

问候!