Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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套接字库通过临时wifi进行广播_Python_Sockets_Wifi_Raspberry Pi3_Adhoc - Fatal编程技术网

如何使用python套接字库通过临时wifi进行广播

如何使用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模式进行配置以使其正常工作。这已得到确认,因为我

Summer研究员使用Raspbian和Python 3.5

我正在尝试使用Raspberry Pi 3 B+通过共享的自组织网络,使用套接字库向其他Pi(相同型号)广播消息。所有PI都可以通过自组织网络ping其他PI。Pis还可以使用标准的客户机-服务器代码和。但是,当我尝试广播一条消息时,Pis会给出一条“网络无法访问”消息(下面是完整错误)

与我一起工作的一名研究生说,他提供给我的脚本预期服务器将在基础架构模式下运行,并且需要对ad-hoc模式进行配置以使其正常工作。这已得到确认,因为我已在桌面上成功运行了代码。我已经翻阅了手册页和stackoverflow,似乎找不到如何为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
仍然不确定如何将网关永久添加到设备;网关似乎在重新启动后重置。请随时提供进一步的问题或澄清