使用python编写udp广播,运行收不到消息
#! /usr/bin/python3" title="python3">python3import socket
import time
# 发送广播的地址
dest = ('172.60.50.255',9993)
# 创建套接字
sk = socket.socket(family=socket.AF_INET,type=socket.SOCK_DGRAM,proto=0)
# 设置套接字可以广播
sk.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
while True:
time.sleep(2)
print('Here')
sk.sendto('大喇叭广播开始了'.encode(),dest)
data,addr = sk.recvfrom(1024)
print('从%s收到的消息%s'%(addr,data.encode()))
#! /usr/bin/python3import socket
Host = ''
Port = 9993
# 创建套接字
sk = socket.socket(family=socket.AF_INET,type=socket.SOCK_DGRAM,proto=0)
# 设置套接字可以进行广播
sk.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
#固定接收的端口号
sk.bind((Host,Port))
while True:
try:
data,addr = sk.recvfrom(1024)
print('收到广播消息:',data.decode())
sk.sendto('我在这里'.encode(),addr)
except (KeyboardInterrupt,SyntaxError):
raise
except Exception as e:
print(e)
sk.close()
回答:
NOTE: 我帮你把代码格式整理好了,以后提问问题注意一下
根据你的代码:
下面一段代码应该是可以收到上面代码发送的第一个报文,然后上面的代码就阻塞在 data,addr = sk.recvfrom(1024)
这里了,因为 sk
并没有 bind,所以它无法用来接收报文,解决方法就给 bind 一下
回答:
client如果没有bind,会自动选择一个未被占用的端口,所以代码是没错的。
你最好确定一下你的路由器是不是禁止了udp广播,或者你的本机ip是不是172.60.50.255
以上是 使用python编写udp广播,运行收不到消息 的全部内容, 来源链接: utcz.com/a/159833.html