Java客户端
byte[] aReceiveData = new byte[1024];
DatagramPacket aReceivePacket = new DatagramPacket(aReceiveData, aReceiveData.length);
aServerSocket.receive(aReceivePacket);
ByteArrayInputStream aInput = new ByteArrayInputStream(aReceiveData);
Message test = Message.parseDelimitedFrom(aInput);
错误
"Protocol message contained an invalid tag (zero)."
Python服务器
mensagem = estoque_pb2.Message()
mensagem.type=1
mensagem.id=requestId
mensagem.methodId="test"
mensagem.obfReference="objectRef"
mensagem.arguments=resultado
return mensagem.SerializeToString()
self.udp.sendto(mensagem,self.client)
我无法使用protobuf将数据从python发送到java,感谢任何帮助!
答案 0 :(得分:0)
接收的数据包可能小于1024字节,因此必须仅在接收的字节范围内创建ByteArrayInputStream。
parseDelimitedFrom方法用于解析分隔的消息。实际上它读取消息长度,然后读取消息本身。据我所知,到目前为止,您的缓冲区仅包含消息。因此,您必须使用parseFrom方法。
byte[] data = new byte[1024];
DatagramPacket pkt = new DatagramPacket(data, data.length);
socket.receive(pkt);
ByteArrayInputStream input = new ByteArrayInputStream(pkt.getData(), pkt.getOffset(), pkt.getLength());
Message test = Message.parseFrom(input);