gpt4 book ai didi

java - 如何使用 Protobuf 将数据从 Python 发送到 Java?

转载 作者:可可西里 更新时间:2023-11-01 02:53:53 24 4
gpt4 key购买 nike

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,感谢任何帮助!

最佳答案

接收到的数据包可以小于 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);

关于java - 如何使用 Protobuf 将数据从 Python 发送到 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40873008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com