如何使用python套接字库通过临时wifi进行广播
Summer研究员使用Raspbian和Python 3.5 我正在尝试使用Raspberry Pi 3 B+通过共享的自组织网络,使用套接字库向其他Pi(相同型号)广播消息。所有PI都可以通过自组织网络ping其他PI。Pis还可以使用标准的客户机-服务器代码和。但是,当我尝试广播一条消息时,Pis会给出一条“网络无法访问”消息(下面是完整错误) 与我一起工作的一名研究生说,他提供给我的脚本预期服务器将在基础架构模式下运行,并且需要对ad-hoc模式进行配置以使其正常工作。这已得到确认,因为我已在桌面上成功运行了代码。我已经翻阅了手册页和stackoverflow,似乎找不到如何为ad-hoc网络配置套接字广播的资源。有什么想法吗?感谢所有的帮助 广播功能:如何使用python套接字库通过临时wifi进行广播,python,sockets,wifi,raspberry-pi3,adhoc,Python,Sockets,Wifi,Raspberry Pi3,Adhoc,Summer研究员使用Raspbian和Python 3.5 我正在尝试使用Raspberry Pi 3 B+通过共享的自组织网络,使用套接字库向其他Pi(相同型号)广播消息。所有PI都可以通过自组织网络ping其他PI。Pis还可以使用标准的客户机-服务器代码和。但是,当我尝试广播一条消息时,Pis会给出一条“网络无法访问”消息(下面是完整错误) 与我一起工作的一名研究生说,他提供给我的脚本预期服务器将在基础架构模式下运行,并且需要对ad-hoc模式进行配置以使其正常工作。这已得到确认,因为我
def broadcast(self, frequency, port):
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
server.settimeout(0.2)
while True:
server.sendto("GET OUT OF MY SWAMP", ('<broadcast>', port))
print("message sent...")
time.sleep(frequency)
Traceback (most recent call last):
File "myServer.py", line 31, in <module>
s.broadcast(float(frequency),int(port))
File "myServer.py", line 22, in broadcast
server.sendto("GET OUT OF MY SWAMP", ('<broadcast>', port))
socket.error: [Errno 101] Network is unreachable
def广播(自身、频率、端口):
服务器=socket.socket(socket.AF_INET、socket.SOCK_DGRAM、socket.IPPROTO_UDP)
server.setsockopt(socket.SOL_socket,socket.SO_广播,1)
server.settimeout(0.2)
尽管如此:
sendto(“走出我的沼泽,('',端口))
打印(“已发送消息…”)
睡眠时间(频率)
错误消息:
def broadcast(self, frequency, port):
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
server.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
server.settimeout(0.2)
while True:
server.sendto("GET OUT OF MY SWAMP", ('<broadcast>', port))
print("message sent...")
time.sleep(frequency)
Traceback (most recent call last):
File "myServer.py", line 31, in <module>
s.broadcast(float(frequency),int(port))
File "myServer.py", line 22, in broadcast
server.sendto("GET OUT OF MY SWAMP", ('<broadcast>', port))
socket.error: [Errno 101] Network is unreachable
回溯(最近一次呼叫最后一次):
文件“myServer.py”,第31行,在
s、 广播(浮点(频率)、整数(端口))
广播中第22行的文件“myServer.py”
sendto(“走出我的沼泽,('',端口))
socket.error:[Errno 101]无法访问网络
我的网关是0.0.0.0。您可以通过运行sudo route-n查看网关。通过运行sudo route add default gw 192.168.0.112(Pi的IP地址),我现在可以向连接到同一端口和网络的任何设备广播“走出沼泽”。“添加”命令后的路由表如下所示:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.112 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
仍然不确定如何将网关永久添加到设备;网关似乎在重新启动后重置。请随时提供进一步的问题或澄清。我的网关是0.0.0.0。您可以通过运行sudo route-n查看网关。通过运行sudo route add default gw 192.168.0.112(Pi的IP地址),我现在可以向连接到同一端口和网络的任何设备广播“走出沼泽”。“添加”命令后的路由表如下所示:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.112 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
仍然不确定如何将网关永久添加到设备;网关似乎在重新启动后重置。请随时提供进一步的问题或澄清