使用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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
python中正则表达式的使用详解
Oct 17 Python
python简单的函数定义和用法实例
May 07 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
python实现上传下载文件功能
Nov 19 Python
python中的colorlog库使用详解
Jul 05 Python
django创建简单的页面响应实例教程
Sep 06 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
使用Python的开发框架Brownie部署以太坊智能合约
May 28 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 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
php intval函数用法总结
2019/04/14 PHP
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
vue开发环境配置跨域的方法步骤
2019/01/16 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
Django实现快速分页的方法实例
2017/10/22 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python模块常用用法实例详解
2019/10/17 Python
python绘制规则网络图形实例
2019/12/09 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
Python验证码截取识别代码实例
2020/05/16 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
如何写出好的Java代码
2014/04/25 面试题
技术负责人任命书
2014/06/05 职场文书
应届大专生求职信
2014/06/26 职场文书
国庆促销活动总结
2014/08/29 职场文书
1000字打架检讨书
2014/11/03 职场文书
离婚协议书范文
2015/01/26 职场文书
生产现场禁烟通知
2015/04/23 职场文书
高一地理教学工作总结
2015/08/12 职场文书
数据库连接池
2021/04/06 MySQL
Pytorch 如何实现常用正则化
2021/05/27 Python