问题标签 [objectinputstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
15289 浏览

java - Java 套接字编程

我正在使用 java 套接字构建一个简单的客户端/服务器应用程序并尝试使用 ObjectOutputStream 等。

当它谈到通过套接字传输对象时,我一直在关注这个 url http://java.sun.com/developer/technicalArticles/ALT/sockets上的教程。

请参阅我的客户端代码http://pastebin.com/m37e4c577但是这似乎不起作用,我无法弄清楚什么不起作用。底部注释掉的代码是直接从教程中复制出来的——当我只使用它而不是创建客户端对象时,这很有效。

谁能看到我做错了什么?

0 投票
3 回答
6236 浏览

java - 对象输入流错误

我正在使用 ObjectOutputStream 创建序列化对象的文件。然后,我使用 ObjectInputStream 和 readObject() 方法将对象从文件中取出。

第一次效果很好。这意味着如果文件不存在并且我打开它然后附加任意数量的对象,我可以打开 ObjectInputStream 对象并访问所有对象。

但是,如果我随后打开同一个文件(使用 append 选项)并添加更多对象,ObjectInputStream 对象会收到 java.io.StreamCorruptedException: "invalid type code: AC" 错误,新对象应该从哪里开始。

有没有其他人遇到过这个?我什至回到了 Deitel 书中的一些基本教科书示例,但仍然遇到同样的错误。

编辑:我发现了这一点 - 一旦序列化流关闭并以附加模式重新打开,您可能无法附加到序列化流的末尾。写入似乎可以工作,但是当您稍后再读取文件时,您将收到 java.io.StreamCorruptedException。在“ http://mindprod.com/jgloss/gotchas.html#SERIALIZATION

0 投票
6 回答
64938 浏览

java - 附加到 ObjectOutputStream

不能附加到一个ObjectOutputStream?

我正在尝试附加到对象列表。以下代码段是一个在作业完成时调用的函数。

但是当我尝试阅读它时,我只得到文件中的第一个。然后我得到java.io.StreamCorruptedException.

阅读我正在使用

我不知道会有多少对象出现,所以我正在阅读,没有例外。根据谷歌的说法,这是不可能的。我想知道是否有人知道方法?

0 投票
1 回答
329 浏览

java - Java - 解析 ObjectInputStream

请告诉我如何区分对象和 ObjectInputStream。比如它是 String 、 Image 还是等...?

0 投票
2 回答
3861 浏览

java - Java:套接字关闭连接和 ObjectInputStream

我的代码如下所示,这是服务器代码 ( Runnable)

我的问题是:当客户端关闭连接时,他仍在等待读取命令,readCommand();直到发送命令并EOFException抛出一个。这是我的readCommand方法:

所以我认为在阅读之前必须检查连接是否打开。

编辑:如果我评估run-method 代码,EOFException则会在try-catch-body. 但他停止接受客户。

0 投票
2 回答
203 浏览

java - java - 内部类的 IO

是否可以将 ObjectOutputStream/ObjectInputStream 设置为内部类?我可以写好,并检查创建的文件,但是当我尝试使用 ObjectInputStream 读回它时,我得到一个 EOFException 只是试图读取一个 Object o = oos.readObject();

  1. 我使用相同的 File 对象来打开两个流,所以这不是问题。
  2. 它似乎与内部类的性质无关——只有一个公共 int 的类与更复杂的类一样失败。

我必须继续前进,创建一个常规类,并在发送者类中实例化,但我讨厌走开,不知道是否可能,如果不知道为什么不这样做。

更新:导致问题的相关问题:

A. 您无法重新打开使用 ObjectOutputStream 写入的文件并追加:写入第二个标头并损坏文件。

B. 使用 ByteOutputStream 序列化 HashMap 以进行哈希摘要不起作用,因为当您从 ObjectOutputStream 文件中读回 HashMap 时,由于对顺序的变化,您很可能会从 ByteOutputStream 获得不同的 byte[]:内容是相同的,但 byte[] (以及散列摘要)不是。

希望这可以帮助某人节省一些时间。

0 投票
4 回答
9650 浏览

java - 如何附加到现有的 java.io.ObjectStream?

至于现在,java.io.StreamCorruptedException当我尝试附加一个对象时我会得到。我已经在互联网上搜索了一种方法来克服它。到目前为止我找到的答案是无法完成。解决此问题的一种方法是将对象写入列表,然后将列表写入文件。

但是每次添加新对象时,我都必须覆盖该文件。这似乎不是加班的最佳解决方案。

有没有办法将对象附加到现有的对象流?

0 投票
5 回答
4203 浏览

java - 使用带有套接字的 Java 对象流的性能问题

我正在尝试使用 Java 中的套接字和对象流进行本地 IPC,但是我发现性能很差。

我正在测试通过 ObjectOutputStream 发送对象到通过 Socket 通过 ObjectInputStream 接收回复的 ping 时间。

这是请求者:

这是响应者:

我得到的结果是:

每平:80.35

对于本地流量来说,80 毫秒的速度太慢了。

Request 和 Response 类非常小,它们的序列化速度很快。

我曾尝试天真地添加:

影响不大。

执行 ping 本地主机:

也很快。

Java 版本 1.6.0_05l 在 RedHat 2.4 上运行

0 投票
2 回答
62353 浏览

java - java.net.SocketTimeoutException:读取超时

我有一个具有客户端服务器架构的应用程序。客户端使用 Java Web Start 和 Java Swing / AWT,sert 使用 HTTP 服务器 / Servlet 和 Tomcat。通信是从对象的序列化开始的,创建一个 ObjectOutput 序列化一个字节数组并发送到服务器,分别称为 ObjectInputStream 和反序列化。

应用程序遵循正确通信到某个并发时间,开始显示错误“SocketException read timeout”。当服务器在我的 servlet doPost 方法中调用方法 ObjectInputStream.getObject() 时会发生错误。

tomcat会变慢,错误开始减少服务器响应时间,直到崩溃时间我必须重新启动服务器并且一切正常之后。

有人经历过这个问题吗?

客户代码

服务器代码

input.readObject() 是错误所在

0 投票
2 回答
1062 浏览

java - ObjectInputStream 中的 EOFException 仅发生在 Webstart 而不是 java(w).exe 的情况下?

任何熟悉从 Webstart(javaws.exe) 启动与启动应用程序的区别的人。使用 java.exe 或 javaw.exe 处理流?

这是我只有在使用 Webstart 时才会遇到的异常:

这就是我在两侧设置连接的方式

[编辑] Webstart 控制台说:Java Web Start 1.6.0_19 Using JRE version 1.6.0_19-b04 Java HotSpot(TM) Client VM

服务器运行相同的 1.6u19

[编辑] JNLP 包含:

谢谢