在Python 中使用套接字進行輸入/輸出套接字進行輸入/輸出套接字操作時,可以遇到以下錯誤:
TypeError: a bytes-like object is required, not 'str'
嘗試將字串物件傳遞給需要類似位元組物件的函數時會發生此錯誤。出現此錯誤的常見情況是在透過 UDP 套接字傳送資料的情況下。
讓我們考慮以下Python 程式碼:
from socket import * serverName = '127.0.0.1' serverPort = 12000 clientSocket = socket(AF_INET, SOCK_DGRAM) message = input('Input lowercase sentence:') clientSocket.sendto(message,(serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print (modifiedMessage) clientSocket.close()
當您嘗試執行此程式碼時,您可能會遇到以下問題:如果您輸入字串作為輸入,則會遇到上述錯誤。 sendto 函數需要一個類似位元組的對象,例如位元組或位元組數組,而不是字串。
解決方案:
要解決此問題,輸入應該在透過套接字發送之前將其轉換為類似位元組的物件。這可以透過使用encode()方法來實現,如下所示:
<code class="python">clientSocket.sendto(message.encode(),(serverName, serverPort))</code>
透過此修改,程式碼可以透過UDP套接字正確傳送類似位元組的對象,解決TypeError。
以上是為什麼在 Python 套接字程式設計中會出現「TypeError: a bytes-like object is required, not 'str'」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!