使用PYTHON接收多播数据的代码


Posted in Python onMarch 01, 2012

首先声明,这不是我写的,而是我找到的,但是别人写的相当好。

# UDP multicast examples, Hugo Vincent, 2005-05-14. 
import socket def send(data, port=50000, addr='239.192.1.100'): 
"""send(data[, port[, addr]]) - multicasts a UDP datagram.""" 
# Create the socket 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
# Make the socket multicast-aware, and set TTL. 
s.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 20) # Change TTL (=20) to suit 
# Send the data 
s.sendto(data, (addr, port)) 
def recv(port=50000, addr="239.192.1.100", buf_size=1024): 
"""recv([port[, addr[,buf_size]]]) - waits for a datagram and returns the data.""" 
# Create the socket 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
# Set some options to make it multicast-friendly 
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
try: 
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) 
except AttributeError: 
pass # Some systems don't support SO_REUSEPORT 
s.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_TTL, 20) 
s.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_LOOP, 1) 
# Bind to the port 
s.bind(('', port)) 
# Set some more multicast options 
intf = socket.gethostbyname(socket.gethostname()) 
s.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(intf) + socket.inet_aton('0.0.0.0')) 
s.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, socket.inet_aton(addr) + socket.inet_aton('0.0.0.0')) 
# Receive the data, then unregister multicast receive membership, then close the port 
data, sender_addr = s.recvfrom(buf_size) 
s.setsockopt(socket.SOL_IP, socket.IP_DROP_MEMBERSHIP, socket.inet_aton(addr) + socket.inet_aton('0.0.0.0')) 
s.close() 
return data
#!/usr/bin/env python 
from socket import *from time import sleep,time,ctime 
HOST = '229.0.0.15'PORT = 9999BUFSIZ = 1024ADDR = (HOST, PORT) 
udpCliSock = socket(AF_INET, SOCK_DGRAM) 
data = 't'*200count = 0while(count<100 ): udpCliSock.sendto(data, ADDR) sleep(1) count = count+1 
udpCliSock.close()
Python 相关文章推荐
python创建列表并给列表赋初始值的方法
Jul 28 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
Python中 Lambda表达式全面解析
Nov 28 Python
spark: RDD与DataFrame之间的相互转换方法
Jun 07 Python
Python闭包函数定义与用法分析
Jul 20 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
10款最好的Python开发编辑器
Jul 03 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
Python优秀开源项目Rich源码解析的流程分析
Jul 06 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 Python
使用PYTHON创建XML文档
Mar 01 #Python
基于python的汉字转GBK码实现代码
Feb 19 #Python
python 装饰器功能以及函数参数使用介绍
Jan 27 #Python
Python常见文件操作的函数示例代码
Nov 15 #Python
python 控制语句
Nov 03 #Python
python 不关闭控制台的实现方法
Oct 23 #Python
python中将阿拉伯数字转换成中文的实现代码
May 19 #Python
You might like
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Django通过json格式收集主机信息
2020/05/29 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
轻化专业学生实习自我鉴定
2013/09/20 职场文书
合作意向书模板
2014/03/31 职场文书
求职教师自荐书
2014/06/19 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
工作保证书怎么写
2015/02/28 职场文书
昆虫记读书笔记
2015/06/26 职场文书
装修安全责任协议书
2016/03/22 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang