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

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

本文详细解析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 相关产品和应用

全部下载

专题列表