2011-06-14 21 views
9

Soy un principiante pitón, y tengo curiosidad ¿Cómo puedo enviar un diccionario a través de TCPPython diccionario enviar throught TCP

+1

TCP es bastante bajo nivel, lo que significa que debe saber más acerca de lo que está haciendo para hacerlo bien. Algo de alto nivel como un [servidor simplexmlrpc] (http://docs.python.org/library/simplexmlrpcserver.html) y [xmlrpclib] (http://docs.python.org/library/xmlrpclib.html) podría ser más fácil y más robusto. –

Respuesta

13

Debe serializarlo con pickle:

import pickle 
dict = {...} 
tcp_send(pickle.dumps(dict)) 

Y en el otro extremo:

import pickle 
dict = pickle.loads(tcp_recieve()) 

Si el otro extremo no está escrito en Python, se puede utilizar un formato de serialización de datos, como xml, json o yaml.

10

Puede utilizar pickle para convertir cualquier objeto de Python (incluyendo un diccionario) a un flujo de bytes , que luego se puede enviar a través de TCP y sin salmuera en el extremo receptor.

O bien, puede usar json, que no depende de que el receptor sea un cliente de Python.

+1

Pickle puede ser una mala idea si el servidor es relativamente liberal con respecto a quién puede enviar los datos para que se desactive - como lo indica la documentación: "El módulo Pickle no está pensado para proteger contra datos erróneos o malintencionados. Nunca deshaga los datos recibidos de un fuente no confiable o no autenticada ". – delnan

+0

Y una introducción de sockets está aquí: http://docs.python.org/howto/sockets.html – 9000

3

Pickle se considera inseguro para enviar estructuras de datos a través de conexiones ya que el objeto nunca se puede reconstruir con confianza. Esta es la razón por la cual yaml, json o cualquier otro formato se considera preferible.

+1

Buen punto. Sin embargo, es un comentario, no una respuesta. – Christian

0

sí. es posible que no esté seguro. pero puede usar https y enviarlo a través del método de publicación. para obtener mehtod, intente considerar cifrar pickle antes de enviar