手机
当前位置:查字典教程网 >脚本专栏 >python >使用PYTHON接收多播数据的代码
使用PYTHON接收多播数据的代码
摘要:首先声明,这不是我写的,而是我找到的,但是别人写的相当好。复制代码代码如下:#UDPmulticastexamples,HugoVincen...

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

复制代码 代码如下:

# 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中wx将图标显示在右下角的脚本代码

python使用os模块的os.walk遍历文件夹示例

python 生成目录树及显示文件大小的代码

python 实现文件的递归拷贝实现代码

Python 随机生成中文验证码的实例代码

Python 初始化多维数组代码

Python中删除文件的程序代码

python利用hook技术破解https的实例代码

python将人民币转换大写的脚本代码

python实现多线程采集的2个代码例子

精品推荐
分类导航