Python UDP Socket编程详解:创建、发送与接收实战

阿麦
阿麦
发布时间:2026-10-13| 4人浏览过
原创

本文详细解析Python中UDP Socket的使用。从Socket基本概念入手,对比TCP与UDP差异,重点讲解UDP无连接、高效传输特性。通过具体代码示例,演示如何创建UDP套接字、绑定端口、发送二进制数据及接收包含源IP和端口信息的响应,帮助开发者掌握基于UDP的网络通信实现。

Socket基础概念

在深入探讨UDP和TCP协议之前,我们首先需要了解Socket这一基础概念。

Socket

Socket,中文常称为套接字,是进程间通信的一种重要机制。与其他进程间通信方式不同,Socket实现了主机之间进程的通信。目前网络上的各种服务大多基于Socket实现,例如QQ、微信等即时通讯工具。

创建Socket的方法

那么,如何创建Socket呢?

首先创建一个TCP类型的Socket。


s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

接着,创建一个UDP类型的Socket。


# # 创建套接字
# udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

UDP协议特性

接下来介绍UDP协议。

UDP(用户数据报协议)是一种无连接的、简单的面向数据报的运输层协议。它不提供可靠性保证,仅将应用程序传递给IP层的数据报文发送出去,不确保数据能否到达目的地。由于UDP在传输过程中无需与服务器建立连接,且没有超时重发机制,因此其传输速度较快。

UDP通信流程解析

下面通过示意图来进一步分析UDP的工作机制。

UDP发送数据的过程。


import socket
# 设置socket
udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 设置目的端口和IP
sendArr = ('192.168.31.174',65535)
sendData = input('请输入你要发送的信息')
# 发送数据,此处有一个坑是sendto()里面的参数必须二进制数据,不能直接传字符串
udpSocket.sendto(sendData.encode('utf-8'),sendArr)

udpSocket.close()

UDP接收数据的过程。


import socket
# 创建UDP套接字

udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定端口号
udpSocket.bind(("", 7789))
recvData = udpSocket.recvfrom(1024)
content, destInfo = recvData

print("content is %s"%content)
print("content is %s"%content.decode("utf-8"))

print(recvData)
udpSocket.close()

从打印结果可以看出,recvData中包含一个元组,该元组记录了接收到的数据方的IP地址和端口号。

发送方通过目标IP和端口号将数据发送给接收方,接收方监听指定端口,从而完成一次UDP通信。这个过程涉及发送方的组包和接收方的解包操作。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。