我正在尝试用 Python 编写一个服务器来与一个预先存在的客户端进行通信,该客户端的消息包是 ASCII 字符串,但前面是代表剩余字符串长度的四字节无符号整数值。
我已经做了一个接收器,但我确信有一个更 Pythonic 的方式。在我找到它之前,我还没有完成发件人。我可以轻松计算消息长度,将其转换为字节并传输消息。我正在努力解决的问题是创建一个整数,它是一个由四个字节组成的数组。
让我澄清一下:如果我的字符串长度为 260 个字符,我希望在前面加上 260 的大端四字节整数表示。所以,我不希望字符串前面的 ASCII 字符串“0260”,而是,我需要四个(非 ASCII)字节代表 0x00000104。
我从客户端接收长度前缀字符串的代码如下所示:
sizeBytes = 4 # size of the integer representing the string length
# receive big-endian 4 byte integer from client
data = conn.recv(sizeBytes)
if not data:
break
dLen = 0
for i in range(sizeBytes):
dLen = dLen + pow(2,i) * data[sizeBytes-i-1]
data = str(conn.recv(dLen),'UTF-8')
我可以简单地做相反的事情。我是 Python 新手,觉得我所做的可能是手写的!
1)有没有更好的方法来接收和解码长度?
2)编码传输长度的“姐妹”方法是什么?
谢谢。