使用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学习笔记_数据排序方法
May 22 Python
python字符串排序方法
Aug 29 Python
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
Python科学计算之Pandas详解
Jan 15 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
python3人脸识别的两种方法
Apr 25 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
Aug 21 Python
在python中求分布函数相关的包实例
Apr 15 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
浅谈anaconda python 版本对应关系
Oct 07 Python
python调用win32接口进行截图的示例
Nov 11 Python
Django视图类型总结
Feb 17 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 mail to 配置详解
2014/01/16 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
PHP最常用的正则表达式
2017/02/13 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
jQuery Ajax使用 全解析
2010/12/15 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
Python中with及contextlib的用法详解
2017/06/08 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
营业员实习自我鉴定
2013/12/07 职场文书
大学生毕业鉴定
2014/01/31 职场文书
新闻编辑求职信
2014/04/09 职场文书
小学二年级评语
2014/04/21 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
宾馆客房管理制度
2015/08/06 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
竞聘书的秘诀
2019/04/02 职场文书
Django程序的优化技巧
2021/04/29 Python