Когда я запускаю следующий пример кода 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 () фактически возвращает некоторые данные,И я вполне уверен, что клиент не отправляет `? 'символ.
Таким образом, я изменяю код, надеясь напечатать первый байт `data ',
elif (tick == 2) and data:
print 'from client: %s' %(data)
print struct.unpack("!B", data)
Но затем я получаю трассировку, заявляющую:" struct.error: unpack требует строкуаргумент длины 1. "
Пакет struct, кажется, является стандартным способом обработки данных сокета.Однако такая ситуация кажется странной.Я получаю данные визуально, печатая и вижу "?"и в коде также есть «и данные» в условном выражении, но я не могу распаковать.
Есть ли другой способ обработки двоичных данных из сокета?