python的socket编程问题

hdr=recvall(s,5)ifhdrisNone:print'UnexpectedEOFreceivingrecordheader-serverclosedconn... hdr = recvall(s, 5)
if hdr is None:
print 'Unexpected EOF receiving record header - server closed connection'
return None, None, None
typ, ver, ln = struct.unpack('>BHH', hdr)

recvall定义如下
def recvall(s, length, timeout=5):
endtime = time.time() + timeout
rdata = ''
remain = length
while remain > 0:
rtime = endtime - time.time()
if rtime < 0:
return None
r, w, e = select.select([s], [], [], 5)
if s in r:
data = s.recv(remain)
# EOF?
if not data:
return None
rdata += data
remain -= len(data)
return rdata

问题是typ, ver, ln = struct.unpack('>BHH', hdr)代码中hdr是分为三个字符吗......接收的包格式是什么样子的......
展开
 我来答
matlab2000
推荐于2016-10-03 · TA获得超过2323个赞
知道大有可为答主
回答量:1678
采纳率:100%
帮助的人:1054万
展开全部
struct在unpack的时候用大端方式读取,先读一个B,也就是一个字节作为类型,然后读一个H,也就是大端的两字节作为版本,然后是大段的两字节作为ln什么的。

很多脚本语言都支持pack,unpack来序列化数据的,你要查一下具体的字符的含义。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式