"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment gérer l'erreur TypeError : un objet de type octets est requis, pas \'str\'` lors de l'envoi d'une entrée utilisateur via un socket dans Python 3 ?

Comment gérer l'erreur TypeError : un objet de type octets est requis, pas \'str\'` lors de l'envoi d'une entrée utilisateur via un socket dans Python 3 ?

Publié le 2024-11-08
Parcourir:263

How to Handle the `TypeError: a bytes-like object is required, not \'str\'` When Sending User Input Through a Socket in Python 3?

Encodage d'objets de type octet pour adresser une erreur de type

Lorsque vous essayez de modifier l'entrée utilisateur via la communication socket, vous pouvez rencontrer l'erreur suivante dans Python 3:

TypeError: a bytes-like object is required, not 'str'

Pour résoudre ce problème, vous devez encoder le message d'entrée avant de l'envoyer via le socket. Python 3 attend des objets de type octet pour le transfert de données réseau, pas des chaînes.

Le code corrigé doit inclure l'ajustement suivant :

clientSocket.sendto(message.encode(),(serverName, serverPort))

En codant la variable du message, vous la convertissez en un objet de type octet qui peut être transmis sur le réseau.

De même, côté serveur, vous devez décoder les données reçues avant de l'imprimer pour vous assurer qu'il s'affiche comme prévu :

modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print (modifiedMessage.decode())

Cette modification corrige efficacement l'erreur TypeError et vous permet de transmettre et de modifier avec succès les entrées de l'utilisateur via la communication socket.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3