当我运行以下python示例代码时,
tick = 0
while True:
tick += 1
print tick
data = s.recv(1024)
if (tick == 1) and data:
print 'from client: %s' %(data)
elif (tick == 2) and data:
print 'from client: %s' %(data)
我知道了,
1
from client: client msg
2
from client: ?
3
我的直觉告诉我,对s.recv()的第二次调用实际上返回了一些数据。而且我相当确定客户端没有发送“?”特点。
所以我修改了代码,希望打印出“数据”的第一个字节,
elif (tick == 2) and data:
print 'from client: %s' %(data)
print struct.unpack("!B", data)
但是随后我得到了一个回溯声明:“struct.error:解压缩需要一个长度为1的字符串参数。”
struct包似乎是处理套接字数据的标准方法。但是,这种情况似乎很奇怪。我通过打印看到“?”以可视方式接收数据。并且该代码在条件中也包含“和数据”,但我无法解压缩。
有没有其他方法可以从套接字处理二进制数据?
最佳答案
elif (tick == 2) and data:
print 'from client: %r' % data # (note 1)
print struct.unpack("!B", data[0]) # (note 2)
struct.unpack
一个字节。 关于python - 从python中的套接字读取二进制数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6560302/