Python解析Socket数据流异常bytes的问题(详细)


当前第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》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...