广播程序
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from socket import *
import time
HOST = '<broadcast>'
PORT = 21567
BUFSIZE = 20
ADDR = (HOST, PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
#设置阻塞
udpCliSock.setblocking(1)
#设置超时时间
udpCliSock.settimeout(0.5)
udpCliSock.bind(('', 0))
udpCliSock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
while True:
data="Robot Online!"
print "sending -> %s"%data
udpCliSock.sendto(data,ADDR)
try:
data,ADDR = udpCliSock.recvfrom(BUFSIZE)
if data:
print data
time.sleep(5)
except Exception :
continue
udpCliSock.close()
接收端程序
#!/usr/bin/env python
# -*- coding:UTF-8 -*-
from socket import *
from time import ctime
HOST = '127.0.0.1'
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)
udpSerSock = socket(AF_INET, SOCK_DGRAM)
#设置阻塞
udpSerSock.setblocking(1)
#设置超时时间 8s
udpSerSock.settimeout(8)
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("Confirmed!",addr)
except Exception:
print 'Robot Off'
udpSerSock.close()