Python3基于Socket实现UDP服务器与客户端通信

苏见山
苏见山
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何使用Python3的socket模块实现基于UDP协议的简单服务器和客户端通信。重点解析UDP面向无连接的特性及数据安全性局限,并通过完整代码示例演示客户端发送、服务端接收及显式转码处理二进制数据的具体步骤,适用于Python网络编程入门学习。

借助Python内置的socket模块,可以便捷地实现UDP协议的通信功能。本文旨在通过构建一个基础的服务器与客户端示例,直观展示UDP在网络编程中的应用场景。为聚焦核心逻辑,此处省略图形界面开发,直接演示在两台计算机上分别运行UDP客户端与服务端程序的交互过程。

UDP(用户数据报协议)是一种面向无连接的传输层协议。使用该协议时,应用程序无需预先建立连接即可发送数据。然而,UDP不提供差错恢复机制,也不支持数据重传,因此其传输过程的安全性相对较低。

客户端实现

在Python3环境中,网络通信仅能处理二进制数据流,因此在发送和接收数据时必须进行显式的编码与解码转换。

from socket import *

host = '192.168.48.128' # 这是客户端的电脑的ip
port = 13141 #接口选择大于10000的,避免冲突
bufsize = 1024 #定义缓冲大小

addr = (host,port) # 元祖形式
udpClient = socket(AF_INET,SOCK_DGRAM) #创建客户端

while True:
  data = input('>>> ')
  if not data:
    break
  data = data.encode(encoding="utf-8") 
  udpClient.sendto(data,addr) # 发送数据
  data,addr = udpClient.recvfrom(bufsize) #接收数据和返回地址
  print(data.decode(encoding="utf-8"),'from',addr)

udpClient.close()

服务器实现

服务端代码同样需要执行显式的编码与解码操作,以确保数据在传输过程中的正确解析。

from socket import *
from time import ctime

host = '' #监听所有的ip
port = 13141 #接口必须一致
bufsize = 1024
addr = (host,port) 

udpServer = socket(AF_INET,SOCK_DGRAM)
udpServer.bind(addr) #开始监听

while True:
 print('Waiting for connection...')
 data,addr = udpServer.recvfrom(bufsize) #接收数据和返回地址
 #处理数据
 data = data.decode(encoding='utf-8').upper()
 data = "at %s :%s"%(ctime(),data)
 udpServer.sendto(data.encode(encoding='utf-8'),addr)
 #发送数据
 print('...recevied from and return to :',addr)

udpServer.close()

以上内容涵盖了本文的核心知识点,希望能为读者的学习提供有益参考。欢迎持续关注本站以获取更多技术支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表