Python UDP应用之广播接收和发送,设置套接字可以发送接收广播,广播风暴【源码】

UDP应用之广播

广播:一点发送,多点接收

广播地址:一个网段内有一个指定的广播地址,是该网段的最大地址。192.168.207.255

接收广播

from socket import *

1.创建套接字

s = socket(AF_INET,SOCK_DGRAM)

2.设置套接字可以发送接收广播

s.setsockopt(SOL_SOCKET,SO_BROADCAST,1)

3.固定接收端口

s.bind(('0.0.0.0',9999))

4.接收广播

while True:

try:

msg,addr = s.recvfrom(1024)

print('从{}获取信息:{}'.format(addr,msg.decode()))

except (KeyboardInterrupt,SyntaxError):

raise

except Exception as e:

print(e)

源码:

from socket import *

import sys


HOST = sys.argv[1]

PORT = int(sys.argv[2])

ADDR = (HOST,PORT)


#创建套接字

sockfd = socket(AF_INET,SOCK_DGRAM)


#消息收发

while True:

data = input('消息:')

sockfd.sendto(data.encode(),ADDR)

data,addr = sockfd.recvfrom(1024)

print('接收到:',data.decode())


sockfd.close()


接收广播

发送广播:

from socket import *

1.设置目标地址

dest = ('192.168.207.255',9999)

s = socket(AF_INET,SOCK_DGRAM)

2.设置能够发送广播

s.setsockopt(SOL_SOCKET,SO_BROADCAST,1)

3.发送广播

while True:

sleep(2)

s.sendto('广播内容'.encode(),dest)

s.close()

源码:

from socket import *


#创建数据报套接字

sockfd = socket(AF_INET,SOCK_DGRAM)


#绑定服务端地址

server_addr = ('0.0.0.0',8888)

sockfd.bind(server_addr)


#消息收发

while True:

data,addr = sockfd.recvfrom(1024)

print('从%s收到%s'%addr,data.decode())

sockfd.sendto('收到你的消息'.encode(),addr)


sockfd.close()

发送广播

广播风暴:一个网络中有大量的广播就会产生风暴占用大量带宽,影响正常的访问速度


最后编辑于:2019/10/18作者: 牛逼PHP

发表评论