Decoding Socket Send Data to Resolve 'TypeError: a bytes-like object is needed, not 'str'
In einem Änderungsversuch Bei Benutzereingaben über UDP-Sockets gibt der bereitgestellte Code einen Fehler aus, der darauf hinweist, dass ein byteähnliches Objekt anstelle einer Zeichenfolge erforderlich ist. Um dieses Problem zu beheben, muss der Code die Eingabenachricht vor dem Senden kodieren.
In Python 3 sind Zeichenfolgen standardmäßig Unicode, während die Kommunikation über Sockets Byte-Daten erwartet. Um die Kompatibilität sicherzustellen, sollte die Nachricht mit der Methode encode() in Bytes konvertiert werden. Hier ist das korrigierte Segment:
clientSocket.sendto(message.encode(), (serverName, serverPort))
Zusätzlich sollte die Nachricht auf der Empfangsseite des UDP-Servers dekodiert werden, damit sie mit der auf der Clientseite angegebenen Kodierung übereinstimmt:
modifiedMessage, serverAddress = clientSocket.recvfrom(2048).decode()
Von Durch Anwenden dieser Änderungen wird der Code die Konvertierung von Daten zwischen Unicode-Zeichenfolgen und byteähnlichen Objekten, die für die Socket-Kommunikation erforderlich sind, korrekt verarbeiten.
Das obige ist der detaillierte Inhalt vonWie behebt man „TypeError: Es ist ein Byte-ähnliches Objekt erforderlich, nicht „str'' beim Senden von Daten über UDP-Sockets in Python 3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!