java - 尽管刷新了 OutputStream,新的 ObjectInputStream 仍会阻塞

标签 java networking objectinputstream

目前,我正在尝试获得一些网络方面的经验,但在使用 ObjectIn/OutputStreams 时,我无法超越连接建立过程中的某些点。

我在几个线程(如这个: Java Creating a new ObjectInputStream Blocks )中阅读了有关 ObjectInputStream 阻塞构造函数的问题,许多人建议首先刷新输出,所以我想出了这个:

out = new ObjectOutputStream(socket.getOutputStream());
String test = "test"; 
out.writeObject(test);
out.flush();
InputStream is = socket.getInputStream();
in = new ObjectInputStream(is);

阻挡线是最后一根。 有什么建议为什么它仍然无法完成吗?如有任何帮助,我们将不胜感激。

最佳答案

您指定的代码行将阻塞,直到对等方在其套接字上创建了 ObjectOutputStream 或向套接字写入了其他内容(这将导致 StreamCorruptedException) .

关于java - 尽管刷新了 OutputStream,新的 ObjectInputStream 仍会阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44351519/

相关文章:

java - 如何找到一个数组的gcd列表,同时忽略0到第n个元素(找到(n-1)个元素的gcd)一个一个?

java - 如何停止 quartz 警告记录器

java - 文件输入流和文件输出流

java - 通过套接字流发送对象

java - 在互联网上使用程序时,ObjectInputStream$BlockDataInputStream.peekByte

java - 在 Eclipse 中使用 Selenium 出现 JSONException

java - 使用 JSP 登录系统 - 忘记密码,使用 sql 数据库?

networking - 为什么启动 docker 容器会改变主机的默认路由?

java - 什么会导致 RMI 方法调用间歇性失败?

python - 为什么要创建不同的 HOST 和 PORT 变量,然后使用它们来创建 ADDR 变量?