所以我有一个套接字,我用protobuf codedoutputstream发送一些数据,如下所示:
int size = myMessage.getSerializedBytes();
out.writeRawVarint32(size) ; // out = CodedOutputStream created from a java.io.OutputStream
myMessage.writeTo(out);
out.flush();
客户机代码编译和写入。如何在服务器端正确地阅读这些内容?如果我使用 DataInputStream
readbyte()读取大小我得到一个负值的大小。。。如果我使用 CodedInputStream
要通过readrawvarint32读取大小,我得到一个很大的值,是我发送的序列化消息大小的10倍。
如何从java中的inputstream读取protobuf消息?? CodedInputStream
? DataInputStream
?
我看了文件,在任何地方都找不到这个文件。我需要下降到协议级别并开始调试字节吗?
1条答案
按热度按时间mrphzbgm1#
在ide中键入内容时要小心,我在outputstream定义中犯了一个小错误:
我正在研究如何序列化protobuf消息。我想一开始我想我应该使用objectoutputstream,添加了它之后就忘了。然后离开它,然后想知道为什么我不能读取protobuf接收端的数据。当我把它修好并使用正确的
OutputStream
通过protobuf方法读取/写入数据,一切都开始工作。