我正在尝试通过TCP套接字(使用protobuf序列化)从Node.js向Java发送消息(字节数组) .
我在java端创建一个服务器套接字,并从Node连接到它:
var client = net.createConnection(12345, "localhost")
client.addListener("connect", function(){
client.write(serializedMsg1)
client.end(serializedMsg2)
})
在java端,我从输入流中获取内容并对其进行反序列化:
Protocol1.parseFrom(inputStream);
Protocol2.parseFrom(inputStream);
问题是如下 - 看起来只有 serializedMsg2
被传递/反序列化,而 serializedMsg1
被忽略 . 据我所知,它发生了,因为字节流没有分隔,应该明确指定数据块的大小 . 不应直接从java端的流中读取数据 - 应首先读取已分隔的块,然后将其反序列化为字节数组 .
1 回答
您可以使用
Buffer
将您正在写入的数据块的大小传递给流:在Java方面: