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 codieren, bevor er sie sendet.
In Python 3 sind Zeichenfolgen standardmäßig Unicode, während die Kommunikation über Sockets Bytedaten 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))
Außerdem sollte die Nachricht auf der Empfangsseite des UDP-Servers dekodiert werden Übereinstimmung mit der auf der Clientseite angegebenen Codierung:
modifiedMessage, serverAddress = clientSocket.recvfrom(2048).decode()
Durch Anwenden dieser Änderungen wird der Code die Datenkonvertierung zwischen korrekt verarbeiten Unicode-Zeichenfolgen und byteartige Objekte, die für die Socket-Kommunikation erforderlich sind.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3