使用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选择网卡发包及接收数据包
Apr 04 Python
关于Python作用域自学总结
Jun 10 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
Python3 main函数使用sys.argv传入多个参数的实现
Dec 25 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
Python pymsql模块的使用
Sep 07 Python
Python Django路径配置实现过程解析
Nov 05 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 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 数组和字符串互相转换实现方法
2013/03/26 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python 自动补全(vim)
2014/11/30 Python
python解析xml文件实例分析
2015/05/27 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
python字符串的常用操作方法小结
2016/05/21 Python
Python reduce()函数的用法小结
2017/11/15 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
“型”走纽约上东区:Sam Edelman
2017/04/02 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
家装电话营销开场白
2015/05/29 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python