您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-将sock.recv转换为字符串

Python-将sock.recv转换为字符串

您从中得到的recv一个bytes字符串:

套接字接收数据。返回值是一个字节对象,表示接收到的数据。

在Python 3.x中,要将bytes字符串转换为Unicode文本str字符串,您必须知道该字符串使用什么字符集编码,因此可以调用decode。例如,如果它是UTF-8:

stringdata = data.decode('utf-8')

(在Python 2.x中,bytes它和一样str,因此您已经 有了 一个字符串。但是,如果要获取Unicode文本unicode字符串,则与3.x中的相同。)

人们经常使用的原因struct是数据不仅是8位或Unicode文本,而是其他某种格式。例如,您可以将每个消息作为“netstring ”发送:长度(作为ASCII数字字符串),后跟一个:分隔符,然后length是UTF-8字节,然后是一个,-如b"3:Abc,"。(格式上有一些变体,但这是伯恩斯坦标准的网络字符串。)

人们使用netstrings或其他类似技术的原因是,在使用TCP时需要某种分隔消息的方法。每个都recv可以给您对方传递的一半send,或者可以让您获得3分send和4分之一。因此,您必须积累一个recv数据缓冲区,然后再将消息拉出。而且,您需要某种方法来告知一条消息何时结束,下一条消息何时开始。如果您只是发送没有任何换行符的纯文本消息,则可以仅使用换行符作为分隔符。否则,您将不得不提出其他建议- 可能是网串,或者\0用作分隔符,或者使用换行符作为分隔符,但在数据中转义了实际的换行符,或者使用某些自定界的结构化格式(例如JSON)。

python 2022/1/1 18:31:19 有208人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶