在Python和Java数据报套接字之间传递JSON数据

2024-09-27 21:31:31 发布

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

嗨,我有一个非常简单的Java服务器和两个客户机。一个客户机是基于Java的,另一个是基于python的。当我从Java客户机向Java服务器发送任何字符串时,它工作得很好,反之亦然。当我从Java向python发送任何字符串时,它也能正常工作。但是当我从python发送一个字符串时,这个字符串是由python json lib使用json.dumps文件,我接收到一个Java缓冲区,其中包含所需的数据和空字节。没有显示字符串的开始或结束。我如何将它转换回相同长度的字符串。目前,JSON数据完成后,字符串有很多空字节,这就是为什么我无法正确解析该字符串的原因。在

接收Java代码如下所示。在

byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
CtrlChannel.getSocket().receive(receivePacket);
strData = new String(receivePacket.getData());
System.out.println("FROM PYTHON:" + strData);

python的发送方代码是这样的。在

^{pr2}$

我是Java新手,所以我可能犯了一些愚蠢的错误。请帮忙。在


Tags: 数据字符串代码服务器jsonnew客户机字节
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:31

在java代码中,您使用1024字节的缓冲区来接收udp数据包,只有当接收到的字节不够时,才会部分填充udp数据包。receivePacket.getData()只返回这个缓冲区。在

当你把它转换成一个字符串时,剩下的字节当然会被之前在缓冲区中的内容填充(在这种情况下是零字节,但是如果你以前用它作为接收缓冲区,als也可以用内容填充)。在

获取接收数据的正确方法是使用getLength()和{}方法:

strData = new String(receivePacket.getData(), receivePacket.getOffset(), receivePacket.getLength());

相关问题 更多 >

    热门问题