TypeError: 套接字通訊需要類似位元組的物件
給定的 Python 程式碼嘗試使用套接字修改使用者輸入。然而,執行時遇到錯誤訊息「a bytes-like object is required, not 'str.'」
問題分析
Python 2 句柄字串和字節不同。在 Python 2 中,程式碼按預期運行。然而,在Python 3中,輸入訊息是字串,而套接字需要類似位元組的物件進行傳輸。這種差異會導致錯誤。
解決方案
要解決問題並透過套接字傳送位元組,請使用encode() 方法將訊息字串轉換為類似位元組的物件。程式碼的更正部分是:
<code class="python">clientSocket.sendto(message.encode(), (serverName, serverPort))</code>
附加說明
為了在伺服器端正確處理訊息,應使用解碼( ) 處理前的方法。以下是包含編碼和解碼操作的修改後的程式碼:
<code class="python">clientSocket.sendto(message.encode(), (serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print(modifiedMessage.decode()) clientSocket.close()</code>
透過實現這些更改,您可以確保程式碼在Python 3 中正確運行,從而能夠透過具有正確位元組處理的套接字進行通信。
以上是如何解決Python中的「TypeError:Socket通訊需要類似位元組的物件」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!