欢迎访问宙启技术站
智能推送

Python实现的UDP服务器

发布时间:2023-12-27 13:06:17

UDP(User Datagram Protocol)是一种无连接的网络传输协议,它不需要建立长连接,而是将数据以数据包的形式发送。

Python提供了socket模块来实现UDP服务器。下面是一个使用例子,实现一个简单的UDP服务器接收来自客户端的消息并回复。

首先,需要导入socket模块:

import socket

然后,创建一个UDP socket对象:

server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

在这个例子中,使用AF_INET来指定IPv4地址族,SOCK_DGRAM指定这是一个UDP socket。

接下来,需要绑定服务器的IP地址和端口:

server_address = ('localhost', 12345)
server_socket.bind(server_address)

在这个例子中,服务器IP地址指定为localhost,端口号为12345。

然后,需要持续监听客户端发送的消息:

while True:
    data, address = server_socket.recvfrom(1024)
    # 接收来自客户端的数据,最大接收数据量为1024字节

    print(f"Received message: {data.decode()} from {address[0]}:{address[1]}")
    # 将接收到的消息和客户端地址打印出来

    response = "Hello, client!"
    server_socket.sendto(response.encode(), address)
    # 向客户端发送回复消息

在这个例子中,使用recvfrom()方法接收来自客户端的数据,并使用decode()方法将字节流转为字符串。

然后,使用sendto()方法向客户端发送回复消息,并使用encode()方法将字符串转为字节流。

完整的代码如下所示:

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

server_address = ('localhost', 12345)
server_socket.bind(server_address)

while True:
    data, address = server_socket.recvfrom(1024)

    print(f"Received message: {data.decode()} from {address[0]}:{address[1]}")

    response = "Hello, client!"
    server_socket.sendto(response.encode(), address)

以上就是一个简单的UDP服务器的实现,当客户端向服务器发送消息时,服务器会接收消息并向客户端发送回复消息。