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

2024-05-19 07:07:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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);

错误

^{pr2}$

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


Tags: testself客户端messagenewjavabytelength
1条回答
网友
1楼 · 发布于 2024-05-19 07:07:32

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

相关问题 更多 >

    热门问题