使用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创建XML文档
Mar 01 Python
Python 基础知识之字符串处理
Jan 06 Python
python实现数据库跨服务器迁移
Apr 12 Python
15行Python代码实现网易云热门歌单实例教程
Mar 10 Python
django 简单实现登录验证给你
Nov 06 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
python如何操作mysql
Aug 17 Python
python中random.randint和random.randrange的区别详解
Sep 20 Python
python3排序的实例方法
Oct 20 Python
Python基础之数据结构详解
Apr 28 Python
Pytest中skip skipif跳过用例详解
Jun 30 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/11/14 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
js计算精度问题小结
2013/04/22 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
Angular实现form自动布局
2016/01/28 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python从入门到精通(DAY 3)
2015/12/20 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Python元字符的用法实例解析
2018/01/17 Python
对python 树状嵌套结构的实现思路详解
2019/08/09 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
十佳护士获奖感言
2014/02/18 职场文书
爱心活动计划书
2014/04/26 职场文书
巾帼文明岗事迹材料
2014/12/24 职场文书
介绍信的格式
2015/01/30 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL