【发布时间】:2016-04-28 09:00:35
【问题描述】:
我目前正在努力让 python 套接字将整数发送到 java 套接字,因此 java 套接字可以在此步骤之后读取表示字符串的字节数组。
我尝试在结构中发送 int,但在 java 端返回大量数字。
p = struct.pack('i', len(data))
clientsocket.send(p)
【问题讨论】:
-
你需要研究不同的序列化库,像 msgpack 这样的东西可以让你以统一的方式发送数据,以便所有语言都能理解数据。
-
也许 字节顺序 是错误的...我猜您正在使用英特尔平台。那将是小尾数。 Internet 和 Java VM 标准是 Big Endian。因此,也许所有字节的顺序都错误(而不是 4-3-2-1,python 可能会发送 1-2-3-4)。也许这就是问题所在。我不知道python btw ;-)
-
我个人根本不会使用序列化,但看看只是将原始数据发送到套接字。在 Java 中,您使用原始 Input/OutputStream 和 DataInput/OutputStream 来执行此操作。
-
谢谢大家,原来是字节顺序不正确。 Jay 你能把它作为答案,以便我可以将其标记为解决方案吗?
-
哦,威廉,我肯定会研究 msgpack。感谢您的建议!
标签: java python sockets networking