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