当我运行下面的Python代码示例,从套接字读取二进制数据在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包似乎是处理套接字数据的标准方式。但是,这种情况似乎很奇怪。我通过打印和看到“?”来直观地接收数据并且代码在条件中也有一个“和数据”,但我无法解压缩。
是否有不同的方式来处理二进制数据从套接字?
来自repr(数据)的值是'\ xaa \ xae'。我不应该能够从这个解压第一个字节吗? – brooksbp
是的,但它是2个字节。 –