python3 局域网udp广播

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jacke121/article/details/81981117

测试成功,主要是把host='<broadcast>'改为 HOST = '192.168.25.255'

局域网就测试成功了。

服务器端程序:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from socket import *  
import time
# HOST = '<broadcast>'
HOST = '192.168.25.255'
PORT = 21567
BUFSIZE = 20 
ADDR = (HOST, PORT)  
udpCliSock = socket(AF_INET, SOCK_DGRAM)
#设置阻塞
udpCliSock.setblocking(1)
#设置超时时间
udpCliSock.settimeout(2)
udpCliSock.bind(('', 0))  
udpCliSock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)  
while True:
    data=b"Robot Online!"
    print("sending -> %s" %data)
    udpCliSock.sendto(data,ADDR)
    try:
        data,ADDR = udpCliSock.recvfrom(BUFSIZE)
        if  data:
            print(data)
        time.sleep(0.2)
    except Exception as E:
        continue
udpCliSock.close()

接收端程序:


# !/usr/bin/env python
# -*- coding:UTF-8 -*-
from socket import *
from time import ctime
HOST = '192.168.25.97'
HOST = '127.0.0.1'
PORT = 21567
BUFSIZE = 20
ADDR = (HOST ,PORT)
udpSerSock = socket(AF_INET, SOCK_DGRAM)
# 设置阻塞
udpSerSock.setblocking(1)
# 设置超时时间 8s
udpSerSock.settimeout(3)
udpSerSock.bind(('' ,PORT))
RobotOnline= False
while True:
    try:
        data, addr = udpSerSock.recvfrom(BUFSIZE)
        print('Robot Online!')
        print('received message from %s >> %s' % (addr, data))
        udpSerSock.sendto(b"Confirmed!", addr)
    except Exception as e:
        print('Robot Off',e)

udpSerSock.close()

参考:https://blog.csdn.net/u010918541/article/details/78235306?locationNum=8&fps=1

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/81981117
今日推荐