使用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原始字符串(raw strings)用法实例
Oct 13 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python删除不需要的python文件方法
Apr 24 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
Python二次规划和线性规划使用实例
Dec 09 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
Python Selenium截图功能实现代码
Apr 26 Python
Python Map 函数的使用
Aug 28 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 Python
Python基础之pandas数据合并
Apr 27 Python
python实现层次聚类的方法
Nov 01 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
javascript canvas检测小球碰撞
2020/04/17 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python实现栈的方法
2015/05/26 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
python反转列表的三种方式解析
2019/11/08 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
C语言笔试题回忆
2015/04/02 面试题
一套C++笔试题面试题
2012/06/06 面试题
数据库基础的一些面试题
2012/02/25 面试题
《鲁班和橹板》教学反思
2014/04/27 职场文书
环保倡议书格式范文
2014/05/14 职场文书
公司投资建议书
2014/05/16 职场文书
2015新员工试用期工作总结
2014/12/12 职场文书
校长师德表现自我评价
2015/03/04 职场文书
实习班主任自我评价
2015/03/11 职场文书
呐喊读书笔记
2015/06/30 职场文书
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python