首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向具有相同IP和端口的不同UDP连接发送套接字消息

向具有相同IP和端口的不同UDP连接发送套接字消息
EN

Stack Overflow用户
提问于 2018-05-04 20:57:00
回答 1查看 623关注 0票数 0

操作系统: Ubuntu 16.04

我正在尝试创建一个Python程序,它可以控制多个Ryze Tello无人机。这些都是非常简单的无人机,可以通过连接计算机通过Wi端口和发送文本命令来控制。

例如,这是一个简单的程序,在这个程序中,一旦连接到无人机的will网络,它就会简单地向无人机发送“起飞”命令。

代码语言:javascript
运行
复制
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto('command', 0, ('192.168.10.1', 8889))
sock.sendto('takeoff', 0, ('192.168.10.1', 8889))

现在,我的目标是能够同时向多个这样的无人机发送命令(例如,让它们执行计划好的“舞蹈”例程)。我有多个Wi连接到我的电脑,每个连接到一个单独的无人机。然而,问题是每个无人机都有固定的IP和端口,如上文所示。我已经尝试了SSH进入无人机,以改变其IP,但没有运气,并支持线不确定它是否有可能与Tello。然而,由于连接在我的计算机上仍然被清晰地处理,所以必须有一种方法分别向无人机发送命令。至于怎么做,我不确定,因此我为什么要寻求帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-05 01:22:29

为每个无人机创建一个单独的socket对象,其中每个socketbind()编辑到无人机连接的特定WiFi适配器的本地IP上。然后,您可以根据需要通过每个socket命令。即使无人机都具有相同的IP和端口,bind也确保每个命令都通过适当的WiFi网络发送到它所针对的正确的无人机。

就像这样:

代码语言:javascript
运行
复制
import socket

sock1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock1.bind(('WiFi_1_IP', 8889));
sock2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock2.bind(('WiFi_2_IP', 8889));
sock3 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock3.bind(('WiFi_3_IP', 8889));
...

sock1.sendto('command', 0, ('192.168.10.1', 8889))
sock2.sendto('command', 0, ('192.168.10.1', 8889))
sock3.sendto('command', 0, ('192.168.10.1', 8889))
...

sock1.sendto('takeoff', 0, ('192.168.10.1', 8889))
sock2.sendto('takeoff', 0, ('192.168.10.1', 8889))
sock3.sendto('takeoff', 0, ('192.168.10.1', 8889))
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50182936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档