(python udp) python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
UDP是User Datagram Protocol的简称,也就是用户数据报协议,是一个无连接的简单的面向数据报的协议。其主要用于不需要一对一连接的通信环境。
要用Python进行UDP通信,可以使用Python内建的socket库. 这个库提供了标准的BSD Sockets API。
这是一个简单的UDP通信的Python例子:
服务端(server.py)
import socket
# 创建socket对象
serverSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 将socket绑定到指定的IP和端口
serverSocket.bind(('127.0.0.1', 12345))
while True:
# 用1024字节的缓冲区接收客户端发送的内容,并记录发送方地址和端口
data, addr = serverSocket.recvfrom(1024)
print ("接收到来自 %s:%s 的数据: %s" % ( addr[0], addr[1], data.decode() ))
客户端(client.py)
import socket
# 创建socket对象,使用IPv4和UDP
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
# 获取用户输入的信息
msg = input('请输入您要发送的信息: ').encode()
# 将消息发送到指定的IP和端口
clientSocket.sendto(msg, ('127.0.0.1', 12345))
启动以上代码后,在客户端输入的任何信息都会被服务端接收并输出。
有时候,我们可能想要向局域网内的所有主机发送消息,此时就需要用到UDP广播。其实实现起来也非常简单,只需要修改client.py中创建socket的部分即可:
UDP广播 (broadcast.py)
import socket
# 创建socket对象,使用IPv4和UDP
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 允许广播
clientSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while True:
# 获取用户输入的信息
msg = input('请输入您要发送的信息: ').encode()
# 将消息发送到指定的广播地址
clientSocket.sendto(msg, ('<broadcast>', 12345))
” 是一个特殊地址,表示要将数据报发送给同一网络中的所有主机。
注意,以上代码应在Python环境中运行,并确保运行机器的防火墙设置允许UDP通信。为了在实际环境中使用,请将 ‘127.0.0.1’ 地址更改为实际的IP地址。
(python counter) 详解Python Counter过滤和约分原始数据 Python Counter模块用于数据统计 全网首发(图文详解1)
(interval函数) 详解MySQL的INTERVAL()函数:返回一个时间间隔 MySQL INTERVAL() 函数解释 全网首发(图文详解1)