java - 无法创建 ObjectInputStream 对象

标签 java sockets serialization objectinputstream

这是我的代码。当我运行这个程序时,我最多打印出“三个半”。 (添加打印是为了调试,因为我不知道任何其他方法。)之后,执行挂起。没有异常(exception),没有提示,什么都没有。那么我的对象创建有什么问题吗?我在网上看到的每个教程都有相同的代码,但我的不起作用。

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

提前致谢。

最佳答案

它在 Javadoc 中:

A serialization stream header is read from the stream and verified. This constructor will block until the corresponding ObjectOutputStream has written and flushed the header.

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

关于java - 无法创建 ObjectInputStream 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23431051/

相关文章:

java - While 循环在 ResultSet.execute 之后终止

c++ - 运算符 '==' 错误

javascript - (不正确的响应 NodeJS + Socket IO)NodeJS 在页面刷新时在套接字上多次写入数据

c - 网络 write() 是否可能失败但 poll() 未检测到

c# - Windows Azure 移动服务和序列化遇到困难

java - Jaxb - 忽略未知属性

java - 在循环内添加一个 keyListener ?是否可以?

java - DTO 在通过网络传输时如何自动序列化 (java)

java 闭包解决方法

java - 将 Map<List<Long>,List<Long>> 转换为字符串并返回