首页 > 其他分享 >06. UDP广播

06. UDP广播

时间:2023-11-02 18:24:21浏览次数:63  
标签:UDP 06 socket server BROADCAST 广播 接字

一、什么是广播

  UDP 广播是一种网络通信的方式,在广域网或局域网中,UDP 广播可以向多个目标主机发送数据包,使得网络中的所有设备都能接收到广播消息。使用广播之后,socket 只需要发送一次 UDP 数据,就可以发送给本局域网中的任何一台电脑相同的数据。

二、UDP广播的流程

import socket                       # 导入socket模块

ss =  socket.socket()               # 创建服务器套接字
ss.setsockopt()                     # 设置UDP套接字允许广播
ss.bind()                           # 套接字与地址绑定

while True:                         # 监听连接
   cs = ss.recvfrom()/ss.sendto()   # 对话(接收/发送)

ss.close()                          # 关闭服务器套接字
from socket import socket
from socket import AF_INET, SOCK_DGRAM, SOL_SOCKET, SO_BROADCAST
from time import ctime

HOST = "127.0.0.1"
PORT = 8080
ADDRESS = (HOST, PORT)

BROADCAST_HOST = "<broadcast>"                                              # <broadcast>会自动改为本局域网的广播ip
BROADCAST_PORT = 8086
BROADCAST_ADDRESS = (BROADCAST_HOST, BROADCAST_PORT)

udp_server = socket(AF_INET, SOCK_DGRAM)                                    # 创建服务器套接字
udp_server.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)                          # 设置UDP允许广播
udp_server.bind(ADDRESS)                                                    # 套接字与地址绑定

while True:                                                                 # 通信循环
    content = input("请输入你要广播的内容:")
    udp_server.sendto(f"【{ctime()}】{content}".encode("utf-8"), BROADCAST_ADDRESS)  # 服务端发送广播内容

    data, client_addr = udp_server.recvfrom(1024)                           # 服务端接收消息,单次最大接收为1024个字节
    print(f"收到客户端【{client_addr}】返回的数据:{data.decode('utf-8')}")

udp_server.close()                                                          # 关闭服务器套接字

标签:UDP,06,socket,server,BROADCAST,广播,接字
From: https://www.cnblogs.com/kurome/p/17805982.html

相关文章

  • Codeforces Round 906 (Div. 2)
    CodeforcesRound906(Div.2)比赛链接A.Doremy'sPaint3题目链接判断给定的数组是不是满足a1+a2=a2+a3=a3+a4=......=an-1+anA思路:这个题一开始没有读仔细问题,导致一时间出错了,后来读清楚问题之后发现其实这个数组中只能出现两个数字,且两个数字之间的差值最多是1A代码:......
  • Qt通过UDP发送广播
      //x.hQUdpSocket*udp=nullptr;//UDP对象voidcreateUdpAndSendData();//创建UDP对象和发送广播数据voiddropUdp();//释放UDP对象voidreadData();//用来接收其他设备发送的数据voidcreateUdpAndSendData(){......
  • Tensorflow2.X+cuda+cudnn配置指南(RTX4060+win11+Anaconda3)
    【背景】前段时间要做一个python语音识别模型,需要tf进行训练,考虑到有GPU就不用限制在CPU上了,所以尝试配置Tensorflow.系统配置为:RTX4060+win11+Anaconda3,使用python3.10配置完成。【补充建议:使用虚拟环境进行版本管理,我用anaconda创建了一个名为tf2,python=3.10的虚拟环境】......
  • 验证2个节点udp和tcp可通性
    -u表示udp,默认是tcp。-l表示作为server监听。server:192.168.0.104上开启udp123端口server发送11client:连接192.168.0.104上udp123端口client发送100 server:192.168.0.104上开启tcp123端口server发送102client:连接192.168.0.104上tcp123端口client发送101......
  • P4067 [SDOI2016] 储能表 题解
    [SDOI2016]储能表-洛谷题目详情-[SDOI2016]储能表-BZOJbyHydroOJ一道很好的数位dp题不过这题有一个比较有意思的性质:当\(n,m\)为\(2^k\)的形式时,最终得到的数组对每一行排序后为\(0\simm-1\)的排列,如果有的话说不定可以作为一个部分分?遇到二进制运......
  • UDP 协议
    UDP协议UDP(UserDatagramProtocol),目标是在传输层提供直接发送报文(Datagram)的能力。Datagram是数据传输的最小单位。UDP协议不会帮助拆分数据,它的目标只有一个,就是发送报文。   与tcp差异  ......
  • Codeforces Round 906 Div. 1 (CF1889)
    貌似现在发周六的CF题解已经失去了时效性,不过问题不大。A.QingshanLovesStrings2Description定义一个长度为\(k\)的\(01\)串\(s\)是好的,当且仅当\(\foralli\in[1,k],s_i\neqs_{k-i+1}\)。现给你一个串,每次操作你可以在任意位置插入一对\(01\)。请构造操作方......
  • day06-列表
    列表(List)是一种有序、可变且允许重复元素的数据结构列表中的每个元素均会分配一个数字,用以记录位置,我们称之为索引(Indexes),索引值从0开始,依次往后计数。列表使用中括号[],元素之间使用逗号,分隔,其元素可以是数字、字符串、列表等其他任何数据类型。1、创建列表使用......
  • 05. UDP编程
    一、什么是UDP协议  相对于TCP协议,UDP协议则是面向无连接的协议。使用UDP协议时,不需要建立连接,只需要知道对象的IP地址和端口号,就可以直接发数据包。但是,数据无法保证一定到达。虽然用UDP传输数据不可靠,但它的优点是比TCP协议的速度快。对于不要求可靠到达的数据而......
  • Codeforces Round 906 (Div. 2)A-E1
    A.Doremy'sPaint3记数组中数的种类数为\(k\),当\(k=1\)时,答案为\(yes\);当\(k=2\)时,记两个种类的数的个数差为\(d\),当\(d≤1\)时,答案为\(yes\);其他情况答案为\(no\)。时间复杂度:\(O(nlogn)\)1voidsolve()2{3intn;cin>>n;45map<int,int>mp;6......