问题标签 [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.
java - Java 套接字编程
我正在使用 java 套接字构建一个简单的客户端/服务器应用程序并尝试使用 ObjectOutputStream 等。
当它谈到通过套接字传输对象时,我一直在关注这个 url http://java.sun.com/developer/technicalArticles/ALT/sockets上的教程。
请参阅我的客户端代码http://pastebin.com/m37e4c577但是这似乎不起作用,我无法弄清楚什么不起作用。底部注释掉的代码是直接从教程中复制出来的——当我只使用它而不是创建客户端对象时,这很有效。
谁能看到我做错了什么?
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 ”
java - 附加到 ObjectOutputStream
不能附加到一个ObjectOutputStream
?
我正在尝试附加到对象列表。以下代码段是一个在作业完成时调用的函数。
但是当我尝试阅读它时,我只得到文件中的第一个。然后我得到java.io.StreamCorruptedException
.
阅读我正在使用
我不知道会有多少对象出现,所以我正在阅读,没有例外。根据谷歌的说法,这是不可能的。我想知道是否有人知道方法?
java - Java - 解析 ObjectInputStream
请告诉我如何区分对象和 ObjectInputStream。比如它是 String 、 Image 还是等...?
java - Java:套接字关闭连接和 ObjectInputStream
我的代码如下所示,这是服务器代码 ( Runnable
)
我的问题是:当客户端关闭连接时,他仍在等待读取命令,readCommand();
直到发送命令并EOFException
抛出一个。这是我的readCommand
方法:
所以我认为在阅读之前必须检查连接是否打开。
编辑:如果我评估run
-method 代码,EOFException
则会在try-catch-body
. 但他停止接受客户。
java - java - 内部类的 IO
是否可以将 ObjectOutputStream/ObjectInputStream 设置为内部类?我可以写好,并检查创建的文件,但是当我尝试使用 ObjectInputStream 读回它时,我得到一个 EOFException 只是试图读取一个 Object o = oos.readObject();
- 我使用相同的 File 对象来打开两个流,所以这不是问题。
- 它似乎与内部类的性质无关——只有一个公共 int 的类与更复杂的类一样失败。
我必须继续前进,创建一个常规类,并在发送者类中实例化,但我讨厌走开,不知道是否可能,如果不知道为什么不这样做。
更新:导致问题的相关问题:
A. 您无法重新打开使用 ObjectOutputStream 写入的文件并追加:写入第二个标头并损坏文件。
B. 使用 ByteOutputStream 序列化 HashMap 以进行哈希摘要不起作用,因为当您从 ObjectOutputStream 文件中读回 HashMap 时,由于对顺序的变化,您很可能会从 ByteOutputStream 获得不同的 byte[]:内容是相同的,但 byte[] (以及散列摘要)不是。
希望这可以帮助某人节省一些时间。
java - 如何附加到现有的 java.io.ObjectStream?
至于现在,java.io.StreamCorruptedException
当我尝试附加一个对象时我会得到。我已经在互联网上搜索了一种方法来克服它。到目前为止我找到的答案是无法完成。解决此问题的一种方法是将对象写入列表,然后将列表写入文件。
但是每次添加新对象时,我都必须覆盖该文件。这似乎不是加班的最佳解决方案。
有没有办法将对象附加到现有的对象流?
java - 使用带有套接字的 Java 对象流的性能问题
我正在尝试使用 Java 中的套接字和对象流进行本地 IPC,但是我发现性能很差。
我正在测试通过 ObjectOutputStream 发送对象到通过 Socket 通过 ObjectInputStream 接收回复的 ping 时间。
这是请求者:
这是响应者:
我得到的结果是:
每平:80.35
对于本地流量来说,80 毫秒的速度太慢了。
Request 和 Response 类非常小,它们的序列化速度很快。
我曾尝试天真地添加:
影响不大。
执行 ping 本地主机:
也很快。
Java 版本 1.6.0_05l 在 RedHat 2.4 上运行
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() 是错误所在
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 包含:
谢谢