通过protobuf CodedOutputStream和CodedInputStream从java中的套接字进行写入和读取
所以我有一个套接字,我使用protobuf CodedOutputStream发送一些数据,如下所示:通过protobuf CodedOutputStream和CodedInputStream从java中的套接字进行写入和读取,java,protocol-buffers,Java,Protocol Buffers,所以我有一个套接字,我使用protobuf CodedOutputStream发送一些数据,如下所示: int size = myMessage.getSerializedBytes(); out.writeRawVarint32(size) ; // out = CodedOutputStream created from a java.io.OutputStream myMessage.writeTo(out); out.flush(); 客户机代码编译和写入。如何在服务器端正确阅
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
?
数据输入流
我阅读了文档,但在任何地方都找不到这篇文档。我需要降低到协议级别并开始调试字节吗?在IDE中键入的内容要小心,我在OutputStream定义中犯了一个小错误:
OutputStream out = new ObjectOutputStream( client.getOutputStream() );
我正在研究如何序列化protobuf消息。我想一开始我想我应该使用ObjectOutputStream,添加了它,然后忘记了它。然后离开了它,我想知道为什么我不能读取protobuf接收端的数据。当我修复它并使用正确的OutputStream
和protobuf方法读/写数据时,一切都开始工作了