工位上的Python——一个简单的UDP广播实例
最近状态神勇,头脑清晰,趁此良机,多多学习,多多看书,把以前看不懂的地方重新看了下,收获匪浅,现把两个简单的小例子献给大家:
先是一个简单的UDP广播接收的小服务器,使用UDP广播,需要注意下协议的使用,已经最最重要的socket选项的设置,设置为传说中的“socket.SO_BROADCAST”,不需要有监听,接收客户端的消息使用recvfrom,发送消息使用sendto:
代码如下:
!/usr/bin/env python #coding:utf-8 import socket,traceback host = ‘‘ port = 51423 s =socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) s.bind((host,port)) while 1: try: message,addr = s.recvfrom(8192) print "Got data from " ,addr s.sendto("I am here",addr) except (KeyboardInterrupt,SystemExit): raise except: traceback.print_exc(
广播的客户端,客户端特别需要注意的是广播的地址写发,为<broadcaset>.
代码如下:
#!/usr/bin/env python #coding:utf-8 import socket,sys dest = (‘<broadcast>‘, 51423) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) s.sendto("hello",dest) print "looking for replies: press Ctrl + c to stop " while 1: (buf ,address) = s.recvfrom(2048) if not len(buf): break print "Revived from %s:%s" %(address ,buf)
本文出自 “弹指26年” 博客,请务必保留此出处http://dbbruce.blog.51cto.com/2061658/1568199
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。