为什么 ObjectInputStream readObject() 抛出 EOF 异常

2023-11-29

我被这个非常奇怪的问题困住了。在客户端中,我传递像这样的对象

try{
    oos.writeObject(new GameStartSerializedObject());
    oos.flush();
}
catch(Exception e){
    e.printStackTrace();
}

在服务器中我正在读取该对象

try{
    //Its my turn
    thrown_message = player_reader.readObject();
}
catch(Exception e){

我的问题是为什么我会收到 EOF 异常。我对对象输入流的理解是,当我调用 readObject() 时,我应该阻塞直到获得一个对象,那么它如何知道是否达到了 eof ?请帮忙!

这就是我创建对象流的方式

ois = new ObjectInputStream(socket.getInputStream());
oos = new ObjectOutputStream(socket.getOutputStream());
oos.flush();

另外,在我写入对象并刷新之后,我应该关闭流。我不会关闭它,因为对象是从代码的不同部分一个接一个地定期写入的。


对等方已关闭连接。因此,没有更多对象可供读取。因此,您已到达流的末尾。因此readObject() throws EOFException.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 ObjectInputStream readObject() 抛出 EOF 异常 的相关文章

随机推荐

  • JavaScript 闭包和 this 对象

    我以为我对这个问题有一个合理的理解thisJavaScript 中的对象 在处理对象 回调以及事件和处理程序时 我自古以来就没有遇到过问题 然而现在 一切都变了 我已经彻底爱上了 JavaScript 纯JS 即不是jQuery proto
  • Android:NoClassDefFoundError 仅在发布版本上

    I m on Android Studio并尝试在发布模式下构建我的项目 在调试模式下一切正常 但在发布模式下出现以下错误 08 26 17 59 05 599 31696 31931 W System err java lang NoCl
  • 如何在后台运行无限循环?

    我有一个持续监控 API 的函数 基本上 该函数获取数据 解析它 然后将其附加到文件中 然后它会等待 15 分钟并一遍又一遍地执行相同的操作 我想要的是在后台运行这个循环 这样我就不会阻止其余代码的执行 如果您正在使用 asyncio 我假
  • Hpa 未获取现有自定义指标?

    我在用着mongodb exporter用于存储 查询指标prometheus 我已经设置了一个自定义指标服务器并为其存储值 这就是证据prometheus exporter and custom metric server作品兼容 Que
  • PowerShell 在新窗口中打开 URL - [system.Diagnostics.process]::Start("","")

    因此 我使用 PowerShell 特别是版本 5 1 为我的工作编写一个脚本 该脚本基本上根据用户从可用选项中选择的内容打开一些网站 为了打开网站 对于本例 假设我要去 Google 我使用 system Diagnostics Proc
  • 使用 LaunchControl 运行 .Rnw 脚本时 texi2dvi() 错误

    我正在尝试使用以下命令在计时器上编译knitr脚本启动控制 一个 launchd GUI 用于在 OSX 上调度类似 cron 的作业 我有一个 Dispatcher R 脚本可以执行以下操作 Library Frameworks R fr
  • $.getJSON 和 google fonts API 在 jQuery 版本高于 1.4.4 的 Internet Explorer 中停止工作

    我几乎花了一整天的时间试图找到这个问题的解决方案 我已经成功编写了使用 Google 字体 API 和 jQuery 1 4 4 动态检索和显示全部字体的代码 适用于所有浏览器 我不得不将 jQuery 更改为 1 7 2 版本 不幸的是我
  • Conda 骨架 pypi:ModuleNotFoundError:没有名为“numpy”的模块

    我正在尝试从我上传到 PyPI 的包创建 conda 包 方法如下本教程 我已经下载并安装了最新的 Linux Anaconda 环境 Ubuntu 16 04 安装后conda build我能够运行conda skeleton pypi
  • Discord 机器人可以存储信息的地方在哪里 [discord.py]

    我对 python 不太陌生 但对discord py 很陌生 我尝试浏览discord py手册 但没有找到可以在discord机器人上存储一些临时变量的位置 discord py 手册 http discordpy readthedoc
  • CSS 媒体查询和 Firefox 的滚动条宽度[重复]

    这个问题在这里已经有答案了 可能的重复 CSS 媒体查询 滚动条 问题 因此 Firefox 在其窗口宽度计算中包含了滚动条宽度 而 Webkit 则没有 这会导致浏览器之间的不一致 现在 我知道从技术上讲 Firefox 通过将滚动条计算
  • Emacs 书签跳转更快?

    I have most of my bookmarks prefixed by a letter in a way that the first letter almost always uniquely determines the bo
  • 如何在远程初始化/更新 git 子模块?

    我经常使用这种模式来轻松部署网站 我有一个裸仓库 我从我的计算机上推送 拉出它 并且这个裸仓库有一个更新后挂钩 可以自动拉入另一个仓库 实时版本 但是 如果我在计算机上添加子模块并推送它 我必须手动连接到远程并执行初始化 更新 有办法解决吗
  • Qt 4.4:禁用接收鼠标事件的小部件

    正如标题所示 有没有办法让禁用的小部件接收鼠标事件 我在用着QWidget setEnabled 用于更改小部件的外观 但我仍然想接收它们的鼠标事件 提前致谢 您可以使用相关小部件上的事件过滤器来执行此操作 看QObject eventFi
  • 将图像作为文件存储在文件系统中或作为二进制文件存储在 BLOB 数据库字段中[重复]

    这个问题在这里已经有答案了 可能的重复 在数据库中存储图像 是还是否 哪种方法更好 有什么优点和缺点 在我看来 将图像存储在数据库中的优点是 数据库完整性 使用外键保持所有数据库条目有效比密切关注文件系统并在数据库的每次更改期间进行所需的更
  • icontains 和 getlist django python

    我们正在尝试返回 Django API 的标题列表 其中标题可以包含一些关键字 例如 如果我们使用 icontains搜索 金钱 和 世界 的方法 api com keyworld money keyword world 这将返回包含金钱
  • ERROR_DLL_INIT_FAILED是什么意思?

    我在调用非托管程序集的托管 C 应用程序中看到以下异常 捕获 System IO FileLoadException 动态链接库 DLL 初始化例程失败 HRESULT 异常 0x8007045A 这个 HRESULT 是什么意思 我应该从
  • 具有动态掩码的 Tensorflow boolean_mask

    boolean mask 的文档说必须静态地知道掩模的形状 但如果你这样做 mask set shape None tf boolean mask tensor mask 看起来效果很好 有什么理由不这样做吗 看着文档密切揭示它涉及维数面具
  • C++ 西班牙语问号

    我开始用 C 进行开发 并且正在控制台中开发一个简单的计算器 当我的程序询问用户是否要退出时 字符 不会出现 西班牙语中的问题位于 和 之间 有人能帮我吗 PD 这个问题只发生在Windows中 而不是Linux中 编辑 这是输出代码的代码
  • pyqt QTableWidgetItem 连接信号

    当我更改单元格中的值时 我试图让 QTableWidget 调用某个函数 self table QtGui QTableWidget tableItem QtGui QTableWidgetItem str attr GetValue se
  • 为什么 ObjectInputStream readObject() 抛出 EOF 异常

    我被这个非常奇怪的问题困住了 在客户端中 我传递像这样的对象 try oos writeObject new GameStartSerializedObject oos flush catch Exception e e printStac