#!/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例子 | 学步园相关推荐

  1. Netty中发送UDP数据报、单播、组播、广播,工作中的一些记录

    Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol).UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据 ...

  2. Qt网络编程之搭建Udp通信【单播、组播、广播】

    由于项目的环境实在局域网内进行传输,所以采用了UDP通信.为此记录一下. UDP概念 UDP(用户数据报协议)是一个简单的面向数据报的传输层协议.提供的是非面向连接的.不可靠的数据流传输.UDP不提供 ...

  3. java单播多播socket_广播(broadcast),组播(multicast),单播(unicast)的Java实现

    ## IP地址 在IPv4中,一共有五类IP地址 * A类地址:网络号占1个字节.网络号的第一位固定为0. * B类地址:网络号占2个字节.网络号的前两位固定为10. * C类地址:网络号占3个字节. ...

  4. Java实现单播,组播,广播

    单播.组播.广播介绍:https://blog.csdn.net/ahou2468/article/details/86526509 目录 1.单播.组播.广播关键类说明 2.单播和广播的具体实现 2 ...

  5. 单播,组播,广播的区别

    单播,组播,广播的区别 单播"(Unicast)."多播"(Multicast)和"广播"(Broadcast)这三个术语都是用来描述网络节点之间通讯 ...

  6. MAC地址分类-----单播,组播,广播的特征

    Mac地址分为三类: 单播地址:指第一个字节的最低位是 0 的 MAC 地址. 组播地址:第一个字节的最低位是 1 的 MAC 地址. 广播地址:广播 MAC 地址是指每个比特都是 1 的 MAC 地 ...

  7. 单播、组播、广播三者之间的区别

    单播.组播.广播其实是IPv4定义的三种流量类型 - 单播流量:一个人发送

  8. IP网络通信的单播、组播和广播

    一.判断两台设备是否在同一局域网内 查看两台设备的ip4地址和子网掩码MASK. 若MASK不一样,则不在同一局域网内. 若MASK一样,分别计算IP&MASK.若二者相同,则在同一局域网,否 ...

  9. Python 创建随机mac地址(单播、组播)

    创建随机mac地址 import random def randomMAC(): mac = [ random.randint(0x00, 0x7f), random.randint(0x00, 0x ...

  10. 【TCP/IP】单播与组播

    [TCP/IP]单播与组播 三种IP地址: 单播地址.广播地址和组播地址 广播和多播仅应用于UDP. TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,TCP肯定是单播.只 ...

最新文章

  1. STM32外部中断与各通道对应关系
  2. Dubbo注解版配置
  3. 为你的程序添加监听器
  4. [转]理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc...
  5. 抓包工具- fiddler的安装
  6. 动态内存分配到底为谁分配内存空间【浅谈动态内存的一个实例】
  7. P3835-[模板]可持久化平衡树【无旋Treap】
  8. 用python写网络爬虫 -从零开始 4 用正则表达式 编写链接爬虫
  9. PCWorld:HTML5会终结移动应用程序吗?
  10. 机器学习方面的参考论文
  11. ANDROID 绘制 三角形 XML
  12. Ubuntu 12.04 Eclipse 3.7 紧凑布局样式美化
  13. 如何删除本地/远程Git分支
  14. 射影几何----用交比证明著名的梅涅劳斯定理
  15. 测试手机速度的软件叫什么,手机测网速哪个软件好? 精确测速软件推荐
  16. Springboot集成rabbitMQ之mandatory和备份交换机
  17. 深入理解Java虚拟机读书笔记七
  18. python性能测试模块_【Python】模块学习之locust性能测试
  19. HTTP代理ip的API接口怎么用?
  20. ETL和ELT到底有啥区别???

热门文章

  1. hexo-github-博客搭建指南
  2. python的日志库logging,真香!!!
  3. hadoop,spark,scala,flink 大数据分布式系统汇总
  4. 1-2 用Python编写【房价预测】模型----paddle
  5. 英特尔 QLC 3D NAND 数据存储
  6. 语义分割车道线,来自两篇论文的融合算法
  7. 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
  8. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象
  9. Cocos Creator 预制的使用模板(一般用于UI)
  10. 报错Failed to initialize JPA EntityManagerFactory: Unable to create requested service解决方法