使用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代码检查工具pylint 让你的python更规范
Sep 05 Python
python类定义的讲解
Nov 01 Python
python设置检查点简单实现代码
Jul 01 Python
python字符串连接方式汇总
Aug 21 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
python实现一次创建多级目录的方法
May 15 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
Python封装成可带参数的EXE安装包实例
Aug 24 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
PHP中的cookie
2006/11/26 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
详解webpack babel的配置
2018/01/09 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
Mac下Anaconda的安装和使用教程
2018/11/29 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
2016年11月份红领巾广播稿
2015/12/21 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python