使用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调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
python获取mp3文件信息的方法
Jun 15 Python
Python正则表达式如何进行字符串替换实例
Dec 28 Python
Python获取指定文件夹下的文件名的方法
Feb 06 Python
Python实现的直接插入排序算法示例
Apr 29 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
对pandas中to_dict的用法详解
Jun 05 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
Python实现密码薄文件读写操作
Dec 16 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 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 Smarty date_format [格式化时间日期]
2010/03/15 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
PHP导入导出Excel代码
2015/07/07 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
Javascript之String对象详解
2016/06/08 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
python实现识别手写数字 python图像识别算法
2020/03/23 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
详解Python3 基本数据类型
2019/04/19 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
英国大码女性时装零售商:Evans
2018/08/29 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
军神教学反思
2014/02/04 职场文书
土地转让协议书
2014/04/15 职场文书
效能监察建议书
2014/05/19 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby
Win10服务全部禁用了怎么启动?Win10服务全部禁用解决方法
2022/09/23 数码科技