[英]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.