UDP数据发送与接收详解

各类资料学习下载合集

​https://pan.quark.cn/s/8c91ccb5a474​

UDP(用户数据报协议)是一种无连接的网络协议,与TCP相比,它更轻量、更快速。UDP适合于对速度要求高而对可靠性要求相对较低的应用场景,比如视频流、语音通话等。在本文中,我们将详细探讨如何使用Python的​​socket​​库进行UDP数据的发送与接收,提供完整的代码示例及运行结果。

1. UDP的基本原理

UDP的工作原理如下:

  1. 数据被打包成数据报(Datagram),通过网络发送。
  2. 接收方收到数据报后,直接处理,不需要确认。
  3. 无法保证数据包的顺序,也无法保证数据包的到达。

2. 技术栈

本例使用Python的​​socket​​库来实现UDP的发送与接收。​​socket​​库提供了对网络套接字的操作,使得UDP编程变得简单。

3. 代码实现

3.1 UDP服务器端实现

下面是一个简单的UDP服务器的实现代码,它接收客户端发送的数据并打印出来:

复制代码
import socket

def udp_server(host='127.0.0.1', port=65432):
    # 创建UDP套接字
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 绑定套接字到地址
    server_socket.bind((host, port))

    print(f"UDP server is running on {host}:{port}...")

    while True:
        # 接收数据
        data, client_address = server_socket.recvfrom(1024)
        print(f"Received data: {data.decode()} from {client_address}")

        # 发送回复数据
        reply = f"Message received: {data.decode()}"
        server_socket.sendto(reply.encode(), client_address)

if __name__ == "__main__":
    udp_server()

3.2 UDP客户端实现

下面是一个简单的UDP客户端的实现代码,它发送数据到服务器并接收回复:

复制代码
import socket

def udp_client(host='127.0.0.1', port=65432):
    # 创建UDP套接字
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    message = "Hello, UDP Server!"
    print(f"Sending: {message}")
    
    # 发送数据
    client_socket.sendto(message.encode(), (host, port))
    
    # 接收回复
    data, server = client_socket.recvfrom(1024)
    print(f"Received: {data.decode()} from {server}")

    # 关闭套接字
    client_socket.close()

if __name__ == "__main__":
    udp_client()

4. 运行结果

4.1 运行UDP服务器

在终端中执行以下命令以运行UDP服务器:

复制代码
python udp_server.py

您将看到如下输出,表示服务器正在运行并等待接收数据:

复制代码
UDP server is running on 127.0.0.1:65432...

4.2 运行UDP客户端

在另一个终端窗口中,运行UDP客户端:

复制代码
python udp_client.py

客户端将发送数据并接收服务器的回复,输出如下:

复制代码
Sending: Hello, UDP Server!
Received: Message received: Hello, UDP Server! from ('127.0.0.1', 65432)

4.3 服务器端接收数据

在运行UDP客户端的终端,UDP服务器将显示接收到的数据和客户端的地址:

复制代码
Received data: Hello, UDP Server! from ('127.0.0.1', 49420)
相关推荐
Autumn72991 分钟前
【材料学python入门】conda、 jupyter、cpu、GPAW、wsl、ubuntu
python·jupyter·conda
K2I-33 分钟前
UCI中Steel Plates Faults不平衡数据集处理
python
蓑笠翁00133 分钟前
Django REST Framework 全面指南:从模型到完整API接口开发
后端·python·django
感谢地心引力1 小时前
【Python】基于 PyQt6 和 Conda 的 PyInstaller 打包工具
数据库·python·conda·pyqt·pyinstaller
xiaohanbao093 小时前
Transformer架构与NLP词表示演进
python·深度学习·神经网络
love530love3 小时前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
程序员晚枫4 小时前
Python 3.14正式发布!这5大新特性太炸裂了
python
先做个垃圾出来………4 小时前
SortedList
python
这里有鱼汤4 小时前
从DeepSeek到Kronos,3个原因告诉你:Kronos如何颠覆传统量化预测
后端·python·aigc
晓宜4 小时前
Java25 新特性介绍
java·python·算法