Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 组织客户端和服务器之间发送的数据_Python_Sockets_Python 2.7 - Fatal编程技术网

Python 组织客户端和服务器之间发送的数据

Python 组织客户端和服务器之间发送的数据,python,sockets,python-2.7,Python,Sockets,Python 2.7,请原谅,如果之前已经解决过这个问题,那么我如何在python应用程序(套接字)中组织客户端和服务器之间交换的数据呢 假设我要发送一些元素-字符串、元组、dict: "hello world", (1, 2, 3), {"k": "v"} 我目前所做的只是将所有内容转换为字符串-在发送之前调用repr(),在接收之后调用eval()。这显然有点多余 我应该如何发送这些数据块?有会议吗?首选格式?如何压缩它?最简单的方法是在客户端对它们进行压缩,然后在服务器端取消对它们的压缩。但是,需要确保数据来

请原谅,如果之前已经解决过这个问题,那么我如何在python应用程序(套接字)中组织客户端和服务器之间交换的数据呢

假设我要发送一些元素-字符串、元组、dict:

"hello world", (1, 2, 3), {"k": "v"}
我目前所做的只是将所有内容转换为字符串-在发送之前调用
repr()
,在接收之后调用
eval()
。这显然有点多余

我应该如何发送这些数据块?有会议吗?首选格式?如何压缩它?

最简单的方法是在客户端对它们进行压缩,然后在服务器端取消对它们的压缩。但是,需要确保数据来自可信源,因为有可能强制unpickle执行任意代码。确保使用
cPickle
获得C语言实现。

最简单的方法是在客户端删除它们,然后在服务器端取消勾选它们。但是,需要确保数据来自可信源,因为有可能强制unpickle执行任意代码。确保使用
cPickle
实现C语言。

您应该这样做,这意味着您永远不应该
eval()
任何通过不安全的网络连接到达的东西(或者您不能绝对确定另一端的实体是谁或它所说的东西)

这里最明显的解决方案是在一端对其进行解码(除非您有特定的性能要求,需要高度压缩的格式,例如)。您应该这样做,这意味着您永远不应该
eval()
任何通过不安全的网络连接到达的内容(或者你不能绝对确定另一端的实体是谁或它所说的是什么)


这里显而易见的解决方案是在一端对其进行解码(除非您有特定的性能要求,需要高度压缩的格式,例如)。JSON就是您要寻找的。如果您有一个对象,并且导入了JSON函数:

from json import dumps, loads
您可以使用
dumps(obj)
编码为JSON,并使用
load(str)
将JSON字符串转换回对象。例如:

dumps([[1,2,3],{"a":"b", "c":"d"}])
产生
'[[1,2,3],{“a”:“b”,“c”:“d”}]

loads('[[1, 2, 3], {"a": "b", "c": "d"}]')

产生
[[1,2,3],{u'a':u'b',u'c':u'd'}]

JSON就是您要寻找的。如果您有一个对象并导入JSON函数:

from json import dumps, loads
您可以使用
dumps(obj)
编码为JSON,并使用
load(str)
将JSON字符串转换回对象。例如:

dumps([[1,2,3],{"a":"b", "c":"d"}])
产生
'[[1,2,3],{“a”:“b”,“c”:“d”}]

loads('[[1, 2, 3], {"a": "b", "c": "d"}]')

产生
[[1,2,3],{u'a':u'b',u'c':u'd'}]

如果你要找google的术语,这是“序列化”,python有
pickle
用于python->python交换和
json
用于python->world交换。如果你要找google的术语,这是“序列化”,python有
pickle
用于python->python交换和
json
用于python世界交流。