使用python UDP数据包发送字符串数据的最佳方法?
在前言中,我对python非常陌生(大约7天),但我是一名经验丰富的软件工程本科生 我想在运行python脚本的机器之间发送数据。我的想法(为了简化事情)是将数据(字符串和int)连接成一个字符串,并在客户端进行解析 UDP数据包以简单的字符串漂亮地发送,但当我试图发送有用的数据时,python总是抱怨我发送的数据;具体来说,python不允许我连接元组使用python UDP数据包发送字符串数据的最佳方法?,python,string,sockets,udp,Python,String,Sockets,Udp,在前言中,我对python非常陌生(大约7天),但我是一名经验丰富的软件工程本科生 我想在运行python脚本的机器之间发送数据。我的想法(为了简化事情)是将数据(字符串和int)连接成一个字符串,并在客户端进行解析 UDP数据包以简单的字符串漂亮地发送,但当我试图发送有用的数据时,python总是抱怨我发送的数据;具体来说,python不允许我连接元组 为了解析客户端上的数据,我需要用破折号分隔数据:'-' nodeList是dictionary类型,其中键是字符串,值是double ran
- 为了解析客户端上的数据,我需要用破折号分隔数据:'-'李>
- nodeList是dictionary类型,其中键是字符串,值是double
randKey = random.choice( nodeList.keys() ) data = str(randKey) +'-'+ str(nodeList[randKey]) mySocket.sendto ( data , address )
.proto
文件,如下所示:
message SomeCoolMessage {
required string key = 1;
required double value = 2;
}
然后在生成后,您可以这样使用它:
randKey = random.choice( nodeList.keys() )
data = SomeCoolMessage()
data.key = randKey
data.value = nodeList[randKey]
mySocket.sendto ( data.SerializeToString() , address )
我可能会使用
json
模块序列化数据。您需要序列化数据。Pickle为您内置了这一功能,您可以要求Pickle提供数据与二进制数据的ascii表示形式(参见文档),或者您可以使用json(它还为您序列化数据),两者都在标准库中。但实际上有十万个不同的库为您处理所有的工作,从一台机器到另一台机器获取数据。我建议使用图书馆
根据速度等因素,不同的库有不同的权衡。在标准库中,您可以获得HTTP,仅此而已(以及原始套接字)。但是还有其他的。
如果超高速比其他东西更重要,或者可能是有效的选择
对我来说,我通常使用它,它让我完全懒惰,只需通过网络调用其他进程。它通常足够快
您知道,UDP不能保证数据会在另一端显示,或者它会按顺序显示。对于你的申请,你可能不在乎,我不知道,但我想我会提出来的 您运行的是哪一个python版本,错误指向的行号(和行数)是什么。我正要自己写一个协议缓冲区的建议!是的,我真的很喜欢它;使像这样的序列化变得轻而易举。