Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python通过套接字向Java应用程序发送整数?_Java_Python_Sockets_Integer_Byte - Fatal编程技术网

如何使用python通过套接字向Java应用程序发送整数?

如何使用python通过套接字向Java应用程序发送整数?,java,python,sockets,integer,byte,Java,Python,Sockets,Integer,Byte,我有一个Python客户端,它发送数据(前面有一条数据长度消息): 以及一个Java服务器,用于接收数据。服务器用于在读取数据之前读取数据长度。然而,我似乎得到了readInt()返回的非常大的数字。问题出在哪里?Java需要整数的二进制表示形式。您可以使用该模块生成二进制表示 在您的情况下,这将是: import struct s.sendall(struct.pack('i', len(data))) 还要确保使用正确的密码。Java可能需要网络字节顺序。正如@mensi所说,在没有任何其

我有一个Python客户端,它发送数据(前面有一条数据长度消息):


以及一个Java服务器,用于接收数据。服务器用于在读取数据之前读取数据长度。然而,我似乎得到了readInt()返回的非常大的数字。问题出在哪里?

Java需要整数的二进制表示形式。您可以使用该模块生成二进制表示

在您的情况下,这将是:

import struct
s.sendall(struct.pack('i', len(data)))

还要确保使用正确的密码。Java可能需要网络字节顺序。

正如@mensi所说,在没有任何其他处理的情况下,Java希望接收数据的二进制表示,这与Python发送的不同。这类问题的一个常见解决方案是处理数据——也就是说,将其转换为更适合网络传输的格式,并在接收端重新构建数据


Python和Java都支持的一种常见序列化格式是。Python的最新版本将
json
模块作为标准库的一部分。

添加了到字节顺序部分的链接。Java可能需要网络字节顺序
import struct
s.sendall(struct.pack('i', len(data)))