使用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列表推导式的使用方法
Nov 21 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
利用Python实现图书超期提醒
Aug 02 Python
Django学习笔记之ORM基础教程
Mar 27 Python
python使用folium库绘制地图点击框
Sep 21 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
Python多线程原理与用法实例剖析
Jan 22 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Selenium 安装和简单使用的实现
Dec 04 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
python中字符串String及其常见操作指南(方法、函数)
Apr 06 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
基本DOM节点操作
2017/01/17 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python 26进制计算实现方法
2015/05/28 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
深入理解Python 多线程
2020/06/16 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
法制报告会主持词
2014/04/02 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
2015年公司新年寄语
2014/12/08 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
志愿者工作心得体会
2016/01/15 职场文书
幼儿园小班教学反思
2016/03/03 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript