当前位置:  编程技术>python

使用PYTHON接收多播数据的代码

    来源: 互联网  发布时间:2014-09-04

    本文导语:  首先声明,这不是我写的,而是我找到的,但是别人写的相当好。 代码如下: # 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 soc...

首先声明,这不是我写的,而是我找到的,但是别人写的相当好。
代码如下:

# 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

    
 
 

您可能感兴趣的文章:

  • 怎么使用outlook一类的客户端接收远程linux的系统邮件
  • Debian 使用Cacti SNMPD按照官方配置以后服务端接收不到数据 NO SUCH OID?
  • 使用非阻塞式IO接收客户数据?
  • Android中BroadcastReceiver(异步接收广播Intent)的使用
  • c#入门之枚举和结构体使用详解(控制台接收字符串以相反的方向输出)
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 哪位会使用代码保护工具WingGuard来保护java代码?
  • Django项目使用示例步骤及代码
  • 使用 C# 动态编译代码和执行的代码
  • TinyXML(c++下操作xml的库)介绍,下载地址及使用代码举例
  • 如何锁定源代码,一次只能有一个线程使用?
  • 使用libpcap实现抓包程序的步骤及代码示例
  • 如何使gcc后的代码,使用相对路径存在调试信息?
  • jquery代码-如何正确使用ToggleClass
  • jquery代码-如何使用多个属性来进行过滤
  • VIM的使用,代码缩进的问题
  • jquery代码-如何使用jQuery来解析xml
  • 如何使用shell文件实现linux环境下的挂载功能,具体代码!!
  • 使用xenocode代码混淆加密的操作步骤
  • 请问如何使用Vim,使其可以在编写C代码时自动缩进
  • 用Jbuilder3 遇到问题不能运行把可疑代码注掉后可以运行但是重新使用可疑代码时又可以运行了多次重复都是如此
  • jquery代码-如何使用.siblings()来选择同辈元素
  • 使用正则表达式替换表情符号核心代码
  • 欢迎使用、加入Arrow项目开发--一个自动化代码生成工具
  • 使用gdb时为什么调用list不出现代码
  • 想使用Kliyx把Delphi写的代码编译为Linux程序, 装什么Linux什么版本最好?请明人指教,谢谢!?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • 大家在UNIX下都使用什么数据库?使用什么做数据开发?
  • mysql数据库下载安装教程和使用技巧
  • 如何使用jsp显示数据库中的数据?
  • mongodb 数据库常用命令使用实例
  • 请教高高手:如何规划和创建数据池?并使用数据池?有资料也行
  • 请教在linux系统开发环境下,有没有db和dbf数据库引擎,如何使用这个数据库?
  • 使用php语句将数据库*.sql文件导入数据库
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • UNIX下面能否使用类似BCP的程序连接另一台UNIX下面的Sybase数据库进行数据处理
  • 使用jquery局部刷新(jquery.load)从数据库取出数据
  • 收缩后对数据库的使用有影响吗?
  • 当发布的程序中含有数据库的使用时,...?
  • oracle数据库删除数据Delete语句和Truncate语句的使用比较
  • 如何强制删除或恢复SQLServer正在使用的数据库
  • 一个数据库函数的使用?
  • 我时用jdbc打开数据库,使用后是否要显示的关闭数据库,还是等java的垃圾回收器来处理。
  • 超级菜鸟问题:使用VMware安装linux会删除硬盘上的数据吗?
  • 嵌入式linux下数据库使用
  • 请教数据库连接池的使用....
  • 关于数据报套接字的使用
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • 编程语言 iis7站长之家
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3