无法创建ObjectInputStream对象

时间:2014-05-02 14:53:32

标签: java sockets serialization objectinputstream

这是我的代码。当我跑这个时,我起床了三个半"打印。 (由于我不知道其他任何方式,因此添加了打印用于调试。)之后,执行挂起。没有例外,没有提示,没有。那我的对象创建有什么问题?我在网上看到的每一个教程都有相同的代码,但是我的工作没有成功。

public class Connection {
    Socket socket;
    ObjectInputStream iStream;
    ObjectOutput outputStream;

    public Connection(Socket s) {
        try {
            System.out.println("One");
            socket = s;
            System.out.println("Two");
            outputStream = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream()));
            System.out.println("Three");
            InputStream is = socket.getInputStream();
            System.out.println("Three and a Half");
            iStream = new ObjectInputStream(is);
            System.out.println("Four");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

提前致谢。

1 个答案:

答案 0 :(得分:1)

它在Javadoc中:

  

从流中读取序列化流标头并进行验证。此构造函数将阻塞,直到相应的ObjectOutputStream已写入并刷新标头。

因此新的ObjectInputStream正在挂起,因为它正在等待输入。您需要创建一个ObjectOutputStream并通过套接字发送数据。