Python搭建UDP简易聊天器 socket实战

Ada
Ada
发布时间:2026-10-12| 2人浏览过
原创

本文演示如何使用 Python 内置 socket 模块搭建基于 UDP 协议的简易聊天器。通过创建数据报套接字、绑定本地端口、封装收发消息函数,并结合 while 循环实现交互式终端通信。适合需要快速验证局域网数据传输逻辑的开发者参考。

核心原理与运行环境

UDP(User Datagram Protocol)是一种轻量级的无连接传输协议。与 TCP 不同,UDP 在发送数据前无需建立握手连接,因此延迟更低、速度更快,但默认不保证数据包不丢失。利用 Python 标准库中的 socket 模块,只需寥寥数行代码即可实现基础的局域网双向通信。

运行本方案需满足以下前置条件:

  • 操作系统:Windows 或 Linux(如 Ubuntu)
  • 运行环境:Python 3.x
  • 开发工具:PyCharm 或任意支持 Python 的编辑器
  • 网络状态:参与通信的设备需处于同一局域网段内

第1步:导入 socket 模块并创建数据报对象

首先引入内置库,并使用 socket.AF_INET(IPv4)与 socket.SOCK_DGRAM(UDP)实例化套接字对象。该对象将作为后续收发数据的载体。

import socket

def main():
    # 创建 UDP 套接字对象
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

注:AF_INET 对应常见的 IPv4 地址,SOCK_DGRAM 指定使用 UDP 数据报模式。PC 端通常采用 IPv4,移动端或现代物联网设备逐渐转向 IPv6。

第2步:编写独立的发送与接收函数

为避免主逻辑臃肿,将收发操作抽离为独立函数。发送时需将字符串转为字节流并指定目标 IP 与端口;接收时需绑定本机监听地址,并通过 recvfrom() 获取返回的数据包与来源地址信息。

# 发送消息模块
def send_msg(udp_socket):
    msg = input('请输入你想要发送的消息:')
    # 编码并发送至目标主机 (示例目标IP: 192.168.3.40,请替换为实际局域网IP)
    udp_socket.sendto(msg.encode('utf-8'), ('192.168.3.40', 8080))

# 接收消息模块
def recv_msg(udp_socket):
    # 接收最多 1024 字节的数据,返回 (数据字节流, 发送者地址)
    recv_data = udp_socket.recvfrom(1024)
    recv_msg_bytes, recv_addr = recv_data
    print(f'来自 {recv_addr} 的消息: {recv_msg_bytes.decode("utf-8")}') 

第3步:整合主循环处理用户交互

在 main() 中完成套接字初始化与本地端口绑定后,进入无限循环等待用户指令。输入 "exit" 可安全终止循环并关闭连接。

def main():
    # 1. 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 2. 绑定本机地址与端口 ('' 代表绑定所有可用网卡接口)
    localhost_addr = ('', 6666)
    udp_socket.bind(localhost_addr)

    # 3. 业务循环
    while True:
        op_num = input('请输入要执行的操作 [1.发送消息 2.接收消息]: ')
        
        if op_num == '1':
            send_msg(udp_socket)
        elif op_num == '2':
            recv_msg(udp_socket)
        else:
            print('输入有误,请重新输入...')

    # 4. 清理资源
    udp_socket.close()

if __name__ == '__main__':
    main()

第4步:启动脚本与跨端测试

保存文件后直接运行脚本。控制台将呈现菜单选项。在另一台处于同网段的设备上运行接收端程序(或同一设备的另一个终端窗口),即可实现双向对话。下方展示了典型的多终端交互状态。

终端控制台显示发送菜单与输入界面
图1:客户端交互界面预览,确认端口绑定成功
多终端窗口实时显示收发数据流转效果
图2:双端同时运行时的实时消息交换结果

排错提示:若发送失败或长时间无响应,请检查目标设备的防火墙是否放行 UDP 8080/6666 端口,并确保双方 IP 在同一子网。192.168.3.40 仅为演示占位符,实际运行时务必替换为目标机真实局域网地址。

以上就是Python搭建UDP简易聊天器的详细内容,更多关于网络通信基础与Python socket模块的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。