我需要逐字节地从套接字中读取数据。我尝试使用这段代码:
lineF = ''
for DataByte in client[0].recv(1):
lineF += DataByte
result 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''))
此外,如果这是一次读取一个字节的唯一原因 - 您可以并且可能应该使用更大的缓冲区大小。如果流中的字节数少于缓冲区可容纳的字节数,它只会为您提供这些字节数。
关于python - 逐字节读取套接字数据并以字符串形式返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9227525/