嗨,我有一个非常简单的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新手,所以我可能犯了一些愚蠢的错误。请帮忙。在
在java代码中,您使用1024字节的缓冲区来接收udp数据包,只有当接收到的字节不够时,才会部分填充udp数据包。
receivePacket.getData()
只返回这个缓冲区。在当你把它转换成一个字符串时,剩下的字节当然会被之前在缓冲区中的内容填充(在这种情况下是零字节,但是如果你以前用它作为接收缓冲区,als也可以用内容填充)。在
获取接收数据的正确方法是使用}方法:
getLength()
和{相关问题 更多 >
编程相关推荐