簡體   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