當我運行下面的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個字節。 –