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

Python-将sock.recv转换为字符串,第1张

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

您从中得到的

recv
是一个
bytes
字符串:

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

在Python
3.x中,要将

bytes
字符串转换为Unipre文本
str
字符串,您必须知道该字符串使用什么字符集编码,因此可以调用
depre
。例如,如果它是UTF-8:

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

(在Python 2.x中,

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

人们经常使用的原因

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

人们使用netstrings或其他类似技术的原因是,在使用TCP时需要某种分隔消息的方法。每个都

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5645554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存