Je voudrais envoyer une liste de dictionnaires via une socket udp. Mais je reçois l'erreur de: TypeError: un objet de type octets est requis, pas 'list' Comment puis-je l'envoyer? Merci à l'avanceEnvoyer une liste de dictionnaires à une socket udp en python 3
Répondre
Vous pouvez utiliser une bibliothèque comme pickle
qui convertit un objet en flux binaire. Par exemple:
import pickle
pickle.dumps(["Hello","World"])
Ce produit:
>>> pickle.dumps(["Hello","World"])
b'\x80\x03]q\x00(X\x05\x00\x00\x00Helloq\x01X\x05\x00\x00\x00Worldq\x02e.'
A la fin de réception, vous pouvez ensuite utiliser pickle.loads(..)
pour reconstruire la liste:
>>> pickle.loads(b'\x80\x03]q\x00(X\x05\x00\x00\x00Helloq\x01X\x05\x00\x00\x00Worldq\x02e.')
['Hello', 'World']
Notez cependant que UDP envoyer un datagramme. Le contenu doit donc correspondre à la taille maximale d'un datagramme .
Merci! Mais maintenant je reçois l'erreur du côté serveur: ** EOF Error: Ran out of input ** Savez-vous ce que cela signifie? – user8097385
@ user8097385: êtes-vous sûr de recevoir les données, c'est-à-dire une erreur type ** si un paquet vide est reçu **. –
Je suis sûr, parce que je suis celui qui envoie les données ... Et j'ai également imprimé pour vérifier si elle existe, et il l'a fait ... – user8097385
Vous pouvez 'pickle.dumps (..)' eux. –
Pouvez-vous expliquer cela plus, s'il vous plaît? – user8097385