ホームページ >バックエンド開発 >Python チュートリアル >Python で「TypeError: ソケット通信に必要なバイトのようなオブジェクト」を解決する方法?
TypeError: ソケット通信に必要なバイト様オブジェクト
指定された Python コードは、ソケットを使用してユーザー入力を変更しようとします。ただし、実行すると、「'str.' ではなく、バイトのようなオブジェクトが必要です。」というエラー メッセージが表示されます。
問題の分析
Python 2 ハンドル文字列とバイトは異なります。 Python 2 では、コードは意図したとおりに機能します。ただし、Python 3 では、入力メッセージは文字列ですが、ソケットでは送信のためにバイトのようなオブジェクトが必要です。この不一致によりエラーが発生します。
解決策
問題を解決し、ソケット経由でバイトを送信するには、encode() メソッドを使用してメッセージ文字列をバイトのようなオブジェクト。コードの修正された部分は次のとおりです。
<code class="python">clientSocket.sendto(message.encode(), (serverName, serverPort))</code>
追加の注意
サーバー側でメッセージを適切に処理するには、受信したデータを decode( ) 処理前のメソッド。エンコード操作とデコード操作の両方を含む変更されたコードは次のとおりです。
<code class="python">clientSocket.sendto(message.encode(), (serverName, serverPort)) modifiedMessage, serverAddress = clientSocket.recvfrom(2048) print(modifiedMessage.decode()) clientSocket.close()</code>
これらの変更を実装すると、コードが Python 3 で正しく機能し、適切なバイト処理でソケットを介した通信が可能になります。
以上がPython で「TypeError: ソケット通信に必要なバイトのようなオブジェクト」を解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。