Heim >Backend-Entwicklung >Python-Tutorial >Wie behebt man „TypeError: Es ist ein Byte-ähnliches Objekt erforderlich, nicht „str'' beim Senden von Daten über UDP-Sockets in Python 3?

Wie behebt man „TypeError: Es ist ein Byte-ähnliches Objekt erforderlich, nicht „str'' beim Senden von Daten über UDP-Sockets in Python 3?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 22:23:02755Durchsuche

How to Fix

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn