我有一个ruby程序,它使用sock.write将数据写入套接字,并且我正在java文件中使用ObjectInputStream读取数据。我收到一个无效的标题错误,转换为我的流的前几个字符。
我已经读过如果你使用ObjectInputStream你必须使用ObjectOutputStream编写,但由于写入文件是ruby我不知道如何实现这一点。
答案 0 :(得分:0)
如您所说,ObjectInputStream
假设其接收的字节已由ObjectOutputStream
格式化。也就是说,它期望传入的字节是Java原语或对象的特定表示。
您的Ruby代码不太可能以这种方式格式化字节。
您需要准确定义从Ruby传递到Java进程的消息的字节格式。您可以告诉我们有关该消息格式的更多信息,但您可能需要使用Java的ByteArrayInputStream(https://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayInputStream.html)。数据将作为原始字节数组进入Java程序,您需要将这些字节解析/解包/处理为适当的对象。
除非性能至关重要,否则您最好使用JSON或YAML作为中间格式。它们可以简化发送简单对象,如字符串,数组和散列(映射)。