这是我的代码。当我跑这个时,我起床了三个半"打印。 (由于我不知道其他任何方式,因此添加了打印用于调试。)之后,执行挂起。没有例外,没有提示,没有。那我的对象创建有什么问题?我在网上看到的每一个教程都有相同的代码,但是我的工作没有成功。
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();
}
}
}
提前致谢。
答案 0 :(得分:1)
它在Javadoc中:
从流中读取序列化流标头并进行验证。此构造函数将阻塞,直到相应的ObjectOutputStream已写入并刷新标头。
因此新的ObjectInputStream正在挂起,因为它正在等待输入。您需要创建一个ObjectOutputStream并通过套接字发送数据。