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)
相关推荐
belldeep7 小时前
python:genesis-world, Genesis-Embodied-AI
人工智能·python·ai·genesis
benchmark_cc8 小时前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
维克兜率天9 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python
取名真是10 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
梦想不只是梦与想10 小时前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合10 小时前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
别问!问就是全会11 小时前
Jupyter Notebook 安装包下载|单元格分块运行,图表直接内嵌
ide·python·其他·jupyter
深蓝AI12 小时前
Python 缓存击穿实测:16 个并发请求如何只回源 1 次
python
benchmark_cc12 小时前
用 00700.HK 做港股行情清洗:字段核对、校验与个人量化开发实践
python·数据分析·pandas·量化交易·股票数据·quantdash
zh路西法13 小时前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace