使用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通过get,post方式发送http请求和接收http响应的方法
May 26 Python
Python实现采用进度条实时显示处理进度的方法
Dec 19 Python
深入分析python数据挖掘 Json结构分析
Apr 21 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
Python之修改图片像素值的方法
Jul 03 Python
python实现超市商品销售管理系统
Nov 22 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
浅析Python 多行匹配模式
Jul 24 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
python脚本框架webpy模板控制结构
Nov 20 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类
2008/04/09 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP异常处理Exception类
2015/12/11 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
2016/05/16 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
python实现ipsec开权限实例
2014/11/11 Python
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
介绍Python中内置的itertools模块
2015/04/29 Python
python发送邮件实例分享
2017/07/28 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
pycharm 安装JPype的教程
2019/08/08 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
Python中常见的数制转换有哪些
2020/05/27 Python
香港礼品网站:GiftU eshop
2017/09/01 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
初中校园广播稿
2014/02/02 职场文书
财务人员求职自荐书范文
2014/02/10 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
个人借款协议书范本
2014/11/17 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
超强台风观后感
2015/06/09 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
python 详解turtle画爱心代码
2022/02/15 Python
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android