#! /usr/bin/python3
import 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/python3
import 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 一下