繁体   English   中英

逐字节读取套接字数据并以字符串形式返回

[英]Read socket data byte by byte and return as a string

我需要逐个字节地从套接字读取数据。 我尝试使用以下代码:

lineF = ''
for DataByte in client[0].recv(1):
    lineF += DataByte

结果lineF必须是数据字符串。

client[0]是什么类型的对象? 假设它是标准库中的socket对象,那么recv()已经为您提供了一个字节字符串。 如果您希望将其作为文本字符串,则可以使用.decode()以及任何向您发送数据的人使用的编码-例如,

 data = client[0].recv(1).decode('utf-8')

编辑:在这种情况下,根据下面的评论,您事先不知道流的长度,则需要继续读取直到数据恢复为空。 内置的iter()可以帮助您:

 def read_socket():
      return client[0].recv(1)

 data = b''.join(iter(read_socket, b''))

另外,如果这是一次读取一个字节的唯一原因-您可以并且可能应该使用更大的缓冲区大小。 如果流中的字节数少于缓冲区可以容纳的字节数,它将只为您提供这些字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM