Xåp*_* - 2 python java sockets byte integer
我有一个Python客户端发送数据(前面有数据长度消息):
s = socket.socket()
s.connect((host, port))
data = 'hello world'
s.sendall('%16s' % len(data)) #send data length
s.sendall(data) #send data
s.close()
Run Code Online (Sandbox Code Playgroud)
和Java中的服务器接收数据.服务器使用DataInputStream.readInt()在读取数据之前读取数据长度.但是我似乎得到了readInt()返回的非常大的数字.问题是什么?
Java期望整数的二进制表示.您可以使用struct模块生成二进制表示.
在您的情况下,这将是:
import struct
s.sendall(struct.pack('i', len(data)))
Run Code Online (Sandbox Code Playgroud)
还要确保使用正确的字节顺序.Java可能期望网络字节顺序.
| 归档时间: |
|
| 查看次数: |
1477 次 |
| 最近记录: |