[英]Python - send/receive a numpy array in an Ethernet Packet
我需要建立一个网络,以将numpy数组从主机计算机传输到客户端计算机。 除非我必须使用16位整数,否则这可以尽可能简单。 我做对了吗? 我应该使用更好的功能/命令吗? (Win7、64位,Python 2.7)到目前为止,它似乎可以正常工作,但是我对网络一无所知,但是我还没有找到一个不错的教程来解释所有这些如何结合在一起。 (请提出一个建议)谢谢!
server.py
import socket, time, numpy as np
myDict = {1:1, 2:2, 3:3}
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while 1:
data = np.array(myDict.values(), dtype = np.int16).flatten()
s.sendto(data, ('<broadcast>',5252))
time.sleep(1)
client.py
import socket, numpy as np
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', 5252))
data = np.empty((1,6), dtype = np.int16)
s.recv_into(data)
print data
您正在使用数据报套接字(UDP)传输数据。 UDP是一种尽力而为的服务,不能保证您发送的每个数据报都会在远程端传递。
一种替代方法是使用TCP,但是您需要先对numpy数据进行序列化,然后再通过套接字发送,然后在收到时反序列化。
如果您可以使用不可靠的UDP传输,那么现在您可以做什么。
编辑:使用广播时-您基本上是将相同的数据发送到直接连接的网络中的所有设备。 任何监听UDP端口5252的设备都将能够接收您正在发送的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.