python udp广播_udp单播-广播-组播-python例子 | 学步园
#!/usr/bin/python
# -*- coding:utf-8 -*-
import threading, sys, os, socket, time, struct, select
class R():
def __init__(self):
pass
@staticmethod
def exit():
os.system("kill -9 " + str(os.getpid())) #杀掉进程
class MulticastServer(threading.Thread):
def __init__(self, addr, groupaddr):
threading.Thread.__init__(self)
self.addr = addr
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
mreq = struct.pack("=4sl", socket.inet_aton(groupaddr), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
sock.bind(addr)
self.sock = sock
self.groupaddr = groupaddr
self.r = 1
def run(self):
sock = self.sock
packSize = 1024
i = 0
while(self.r):
try:
infds, outfds, errfds = select.select([sock,],[],[],5)
if len(infds) > 0:
data, client = sock.recvfrom(packSize)
print "MulticastServer recv data: ", data, "client: ", client
sock.sendto("MulticastServer" + str(i), client)
i += 1
except:
break
class MulticastClient(threading.Thread):
def __init__(self, addr, destaddr):
threading.Thread.__init__(self)
self.addr = addr
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(addr)
self.sock = sock
self.destaddr = destaddr
self.r = 1
def run(self):
sock = self.sock
packSize = 1024
i = 0
while(self.r):
try:
sock.sendto("MulticastClient" + str(i), self.destaddr)
i += 1
infds, outfds, errfds = select.select([sock,],[],[],5)
if len(infds) > 0:
data, client = sock.recvfrom(packSize)
print "MulticastClient recv data: ", data, "client: ", client
time.sleep(0.5)
except:
break
class BroadcastServer(threading.Thread):
def __init__(self, addr):
threading.Thread.__init__(self)
self.addr = addr
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(addr)
self.sock = sock
self.r = 1
def run(self):
sock = self.sock
packSize = 1024
i = 0
while(self.r):
try:
infds, outfds, errfds = select.select([sock,],[],[],5)
if len(infds) > 0:
data, client = sock.recvfrom(packSize)
print "BroadcastServer recv data: ", data, "client: ", client
sock.sendto("BroadcastServer" + str(i), client)
i += 1
except:
break
class BroadcastClient(threading.Thread):
def __init__(self, addr, destaddr):
threading.Thread.__init__(self)
self.addr = addr
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(addr)
self.sock = sock
self.destaddr = destaddr
self.r = 1
def run(self):
sock = self.sock
packSize = 1024
i = 0
while(self.r):
try:
sock.sendto("BroadcastClient" + str(i), self.destaddr)
i += 1
infds, outfds, errfds = select.select([sock,],[],[],5)
if len(infds) > 0:
data, client = sock.recvfrom(packSize)
print "BroadcastClient recv data: ", data, "client: ", client
time.sleep(0.5)
except:
break
class UnicastServer(threading.Thread):
def __init__(self, addr):
threading.Thread.__init__(self)
self.addr = addr
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(addr)
self.sock = sock
self.r = 1
def run(self):
sock = self.sock
packSize = 1024
i = 0
while(self.r):
try:
infds, outfds, errfds = select.select([sock,],[],[],5)
if len(infds) > 0:
data, client = sock.recvfrom(packSize)
print "UnicastServer recv data: ", data, "client: ", client
sock.sendto("UnicastServer" + str(i), client)
i += 1
except:
break
class UnicastClient(threading.Thread):
def __init__(self, addr, destaddr):
threading.Thread.__init__(self)
self.addr = addr
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(addr)
self.sock = sock
self.destaddr = destaddr
self.r = 1
def run(self):
sock = self.sock
packSize = 1024
i = 0
while(self.r):
try:
sock.sendto("UnicastClient" + str(i), self.destaddr)
i += 1
infds, outfds, errfds = select.select([sock,],[],[],5)
if len(infds) > 0:
data, client = sock.recvfrom(packSize)
print "UnicastClient recv data: ", data, "client: ", client
time.sleep(0.5)
except:
break
def main(argv):
try:
mserver = MulticastServer(("0.0.0.0", 10010), "224.0.1.255")
mserver.start()
mclient = MulticastClient(("0.0.0.0", 10011), ("224.0.1.255", 10010))
mclient.start()
bserver = BroadcastServer(("0.0.0.0", 10012))
bserver.start()
bclient = BroadcastClient(("0.0.0.0", 10013), ("255.255.255.255", 10012))
bclient.start()
userver = UnicastServer(("0.0.0.0", 10014))
userver.start()
uclient = UnicastClient(("0.0.0.0", 10015), ("127.0.0.1", 10012))
uclient.start()
uclient2 = UnicastClient(("0.0.0.0", 10017), ("127.0.0.1", 10014))
uclient2.start()
except:
R.exit()
while 1:
try:
time.sleep(1000)
except:
R.exit()
if __name__ == "__main__":
main(sys.argv)
python udp广播_udp单播-广播-组播-python例子 | 学步园相关推荐
- Netty中发送UDP数据报、单播、组播、广播,工作中的一些记录
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol).UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据 ...
- Qt网络编程之搭建Udp通信【单播、组播、广播】
由于项目的环境实在局域网内进行传输,所以采用了UDP通信.为此记录一下. UDP概念 UDP(用户数据报协议)是一个简单的面向数据报的传输层协议.提供的是非面向连接的.不可靠的数据流传输.UDP不提供 ...
- java单播多播socket_广播(broadcast),组播(multicast),单播(unicast)的Java实现
## IP地址 在IPv4中,一共有五类IP地址 * A类地址:网络号占1个字节.网络号的第一位固定为0. * B类地址:网络号占2个字节.网络号的前两位固定为10. * C类地址:网络号占3个字节. ...
- Java实现单播,组播,广播
单播.组播.广播介绍:https://blog.csdn.net/ahou2468/article/details/86526509 目录 1.单播.组播.广播关键类说明 2.单播和广播的具体实现 2 ...
- 单播,组播,广播的区别
单播,组播,广播的区别 单播"(Unicast)."多播"(Multicast)和"广播"(Broadcast)这三个术语都是用来描述网络节点之间通讯 ...
- MAC地址分类-----单播,组播,广播的特征
Mac地址分为三类: 单播地址:指第一个字节的最低位是 0 的 MAC 地址. 组播地址:第一个字节的最低位是 1 的 MAC 地址. 广播地址:广播 MAC 地址是指每个比特都是 1 的 MAC 地 ...
- 单播、组播、广播三者之间的区别
单播.组播.广播其实是IPv4定义的三种流量类型 - 单播流量:一个人发送
- IP网络通信的单播、组播和广播
一.判断两台设备是否在同一局域网内 查看两台设备的ip4地址和子网掩码MASK. 若MASK不一样,则不在同一局域网内. 若MASK一样,分别计算IP&MASK.若二者相同,则在同一局域网,否 ...
- Python 创建随机mac地址(单播、组播)
创建随机mac地址 import random def randomMAC(): mac = [ random.randint(0x00, 0x7f), random.randint(0x00, 0x ...
- 【TCP/IP】单播与组播
[TCP/IP]单播与组播 三种IP地址: 单播地址.广播地址和组播地址 广播和多播仅应用于UDP. TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,TCP肯定是单播.只 ...
最新文章
- STM32外部中断与各通道对应关系
- Dubbo注解版配置
- 为你的程序添加监听器
- [转]理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc...
- 抓包工具- fiddler的安装
- 动态内存分配到底为谁分配内存空间【浅谈动态内存的一个实例】
- P3835-[模板]可持久化平衡树【无旋Treap】
- 用python写网络爬虫 -从零开始 4 用正则表达式 编写链接爬虫
- PCWorld:HTML5会终结移动应用程序吗?
- 机器学习方面的参考论文
- ANDROID 绘制 三角形 XML
- Ubuntu 12.04 Eclipse 3.7 紧凑布局样式美化
- 如何删除本地/远程Git分支
- 射影几何----用交比证明著名的梅涅劳斯定理
- 测试手机速度的软件叫什么,手机测网速哪个软件好? 精确测速软件推荐
- Springboot集成rabbitMQ之mandatory和备份交换机
- 深入理解Java虚拟机读书笔记七
- python性能测试模块_【Python】模块学习之locust性能测试
- HTTP代理ip的API接口怎么用?
- ETL和ELT到底有啥区别???
热门文章
- hexo-github-博客搭建指南
- python的日志库logging,真香!!!
- hadoop,spark,scala,flink 大数据分布式系统汇总
- 1-2 用Python编写【房价预测】模型----paddle
- 英特尔 QLC 3D NAND 数据存储
- 语义分割车道线,来自两篇论文的融合算法
- 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
- 2021年大数据常用语言Scala(十八):基础语法学习 Map对象
- Cocos Creator 预制的使用模板(一般用于UI)
- 报错Failed to initialize JPA EntityManagerFactory: Unable to create requested service解决方法