Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 逐字节读取套接字数据并作为字符串返回_Python_Sockets - Fatal编程技术网

Python 逐字节读取套接字数据并作为字符串返回

Python 逐字节读取套接字数据并作为字符串返回,python,sockets,Python,Sockets,我需要从套接字逐字节读取数据。我尝试使用以下代码: lineF = '' for DataByte in client[0].recv(1): lineF += DataByte 结果lineF必须是数据字符串。什么类型的对象是客户端[0]?假设它是标准库中的socket对象,那么recv()已经为您提供了一个bytestring。如果您想将其作为文本字符串,则可以将.decode()与发送数据的人使用的任何编码一起使用-例如 data = client[0].recv(1).dec

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

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

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

什么类型的对象是
客户端[0]
?假设它是标准库中的
socket
对象,那么
recv()
已经为您提供了一个bytestring。如果您想将其作为文本字符串,则可以将
.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''))
此外,如果这是一次读取一个字节的唯一原因,那么您可以而且可能应该使用更大的缓冲区大小。如果流中的字节数少于缓冲区所能容纳的字节数,它将只提供这些字节。

是。recv()给了我一个bytestring。我可以使用客户端[0].recv(1024)获取整个字符串,但我不知道字符串长度。它可能是多种多样的。我需要逐字节获取所有数据,然后获取bytestring。