¿Cómo puedo pasar un tipo de lista de datos a través de UDP usando la programación de sockets en Python?
La lista o dictado en Python se puede convertir en una cadena JSON para enviar y luego volver a convertirse después de recibir.
¿Primero import?json
Luego, convierta la lista o dict a JSONjson_string?=?json.dumps(list_or_dict)
Si está utilizando Python3, el json_string aquí será de tipo str (es decir, el tipo Unicode de Python2), que puede necesitar ser codificado:
if type(json_string) == six.text_type:
json_string = json_string.encode ('UTF-8')
Use socket para enviar, por ejemplo s.sendto(json_string,?address)
La otra parte usa socket para recibir, por ejemplo json_string,?addr?=?s .recvfrom(2048)
Convertir JSON a lista o dict?list_or_dict?=?json.loads(json_string)
El siguiente es un ejemplo completo:
client.py#!/usr/bin/env?python
#?-*-?coding:?UTF-8?-*-
importar?socket
importar?json
importar?seis
dirección?=?('127.0.0.1',?31500)
s?=?socket. socket(socket.AF_INET,?socket.SOCK_DGRAM)
mi lista?=?[1,?2,?3,?4,?5,?6, ?7,?8,?9,? 10]
json_string?=?json.dumps(mylist)
if?type(json_string)?==?six.text_type:
json_string?= ?json_string.encode('UTF-8')
s.sendto(json_string,?address)
s.close()
server.py# !/usr/bin/env?python
#?-*-?coding:?UTF-8?-*-
importar ?socket
importar ?json
dirección?=?('127.0.0.1',?31500)
s?=?socket.socket(socket. AF_INET,?socket.SOCK_DGRAM)
s.bind(dirección)
json_string,?addr?=?s.recvfrom(2048)
mylist?= ?json.loads(json_string)
print(mylist)
s.close()
Ejecute primero server.py y luego client.py p>