【问题标题】:java.io.StreamCorruptedException with ruby sender and java clientjava.io.StreamCorruptedException 与 ruby​​ 发送者和 java 客户端
【发布时间】:2018-01-14 22:35:25
【问题描述】:

我有一个 ruby​​ 程序,它使用 sock.write 将数据写入套接字,并且我正在使用 Java 文件中的 ObjectInputStream 读取数据。我收到一个无效的标头错误,该错误会转化为我的流的前几个字符。

我读到如果你使用 ObjectInputStream,你必须用 ObjectOutputStream 编写,但由于写入文件是 ruby​​,我不知道如何完成这个。

【问题讨论】:

标签: java ruby objectinputstream


【解决方案1】:

正如您所说,ObjectInputStream 假定它接收的字节已由ObjectOutputStream 格式化。也就是说,它期望传入的字节是 Java 原语或对象的特定表示。

您的 Ruby 代码不太可能以这种方式格式化字节。

您需要准确定义从 Ruby 传递到 Java 进程的消息的字节格式。您可以告诉我们有关该消息格式的更多信息,但您可能需要使用 Java 的 ByteArrayInputStream (https://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayInputStream.html)。数据将作为原始字节数组进入 Java 程序,您需要将这些字节解析/解包/处理为任何合适的对象。

除非性能至关重要,否则最好使用 JSON 或 YAML 作为中间格式。它们将使发送简单对象(例如字符串、数组和哈希(映射))变得简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2021-10-19
    相关资源
    最近更新 更多