注意: ubuntu环境下SO_BROADCAST和SO_REUSEADDR一定要加上,不然收不到广播。
import socket
from algorithm import landmark_match, char_checksum, DOpenPort, DWritePort, get_ip, singleNumber2,get_mac_address,getaddr,UDPSocket
def updsocket():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
print(get_ip())
#绑定端口:
s.bind(('', 20001))
while True:
#接收来自客户端的数据,使用recvfrom
print("------------------------------------")
data, addr = s.recvfrom(2048)
print(data)
json =str({"SN":get_mac_address(),"dhcp":1,"ip":get_ip(),"softver":"5.2.5"})
s.sendto(json.encode('utf-8'),addr)