当前第2页 返回上一页
2)数据流拆分,再处理
一般socket服务端在发送数据时,每个数据流是完整的,并会以特定的字符(如:\n)结束一并发送。根据这种现状,我们在每次接受数据时,根据这个特定字符拆分(split)为一个保存单个数据流的列表。列表的第一个流可能为不完整,把它和上次接受的流合并为一个完整的数据流并转义;中间为可以正常转义的数据流;最后一个流也为不完整,保存下来,用来拼接下次接受的流,并重复上述操作,这样保障了程序不会异常退出,也保障数据的完整性。大致代码如下:
数据接受情况:
第一次接受 msg1 = b'\xe5\x88\x86\n\xe9' ; # 钟 被拆分成 \xe9 和 \x92\x9f
第二次接受 msg2 = b'\x92\x9f_stone\n'
1 2 3 4 5 6 7 8 9 10 | init_msg = b '' # 初始化流
while True:
msg = soc.recv(128) # 接受数据
init_msg += msg
msg_arr = init_msg.split(b '\n' ) # 注意此处的 b '\n' ,因为被拆分的为bytes串,所以也要用bytes串来拆分
init_msg += msg_arr[-1]
msg_arr.remove(msg_arr[-1])
for i in range(len(msg_arr)):
string = msg_arr[i].decode( 'utf-8' )
print (string
|
以上就是Python解析Socket数据流异常bytes的问题(详细)的详细内容,更多文章请关注木庄网络博客!!
返回前面的内容
相关阅读 >>
Python怎么模拟点击网页按钮
Python 列表推导式使用的注意事项
Python编程快速上手适合初学者吗
如何在Python中添加自定义模块的方法介绍
Python自定义函数实例有哪些?
Python setup.py install是什么意思
Python中numpy是什么
为什么Python不好找工作
Python中的条件判断语句基础学习
Python中什么是算术运算符、赋值运算符和复合运算符?
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python解析Socket数据流异常bytes的问题(详细)