Python实现UDP广播

服务器端和正常服务器端实现相同:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

PORT = 1060

s.bind(('', PORT))

print('Listening for broadcast at ', s.getsockname())

while True:

  data, address = s.recvfrom(65535)

  print('Server received from {}:{}'.format(address, data.decode('utf-8')))

客户端把指定地址换成:<broadcast>即可

# test
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

PORT = 1060

network = '<broadcast>'

s.sendto('Client broadcast message!'.encode('utf-8'), (network, PORT))

获取本级IP:

def get_host_ip():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        print(s)
        ip = s.getsockname()[0]
    finally:
        s.close()

    return ip

猜你喜欢

转载自blog.csdn.net/qq_21454973/article/details/124345721