20252110史菲宇Python实验三
2025-2026-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级:2521
姓名:史菲宇
学号:20252110
实验教师:王志强
实验日期:2026年4月28日
课程性质:公选课
一、实验内容
本次实验围绕 Socket 网络编程技术 展开,分为两大核心任务,具体要求如下:
1. 基础 Socket 通信程序
1.用 Python 实现 TCP 协议的服务端与客户端程序,服务端需在指定端口监听客户端连接,支持多轮双向通信;
2.通信内容需实现加密传输:发送方输入明文,加密后传输;接收方收到密文后解密并显示,双方均需同时输出明文与密文;
3.与队友互相通信,分别作为客户端与服务端完成一次完整交互;
2. 带图形界面的 Socket 聊天程序
1.使用 LLM 生成带 GUI 界面的 Socket 加密聊天程序;
2.分析关键代码的功能、实现逻辑与使用方法;
3.运行并验证程序功能,记录运行过程与结果;
4.完成代码托管,对比分析生成程序的优缺点。
二、实验过程及结果
(一)基础 Socket 加密通信程序实现
1. 代码实现
服务端代码
实现了 TCP 连接监听、接收加密数据、解密并输出明文 / 密文、发送加密消息的完整逻辑,加密方式采用最最简单的字符位移加密(+3/-3),确保数据传输的基础安全性。代码如下:

客户端代码
实现了连接服务端、发送加密数据、接收并解密服务端消息的逻辑,与服务端形成双向加密通信闭环~

2. 服务端运行截图:展示了服务端启动、接收客户端连接、双向通信时明文与密文的输出结果,包括队友发送的消息与自身回复的加密数据。
客户端运行截图:展示了客户端连接服务端、发送消息、接收并解密服务端回复的完整过程,验证了加密 / 解密逻辑的正确性。
3.队友通信验证
本次实验与队友完成了双向通信,分别作为客户端与服务端进行了多轮消息交互,双方程序均能正确实现加密传输、解密显示。
(二)好看的LLM 生成带 GUI 的加密聊天程序
1. 关键代码
LLM 生成的程序基于tkinter构建图形界面,使用 XOR 加密算法实现数据加密,并通过多线程处理 Socket 通信,避免界面卡顿,核心模块功能如下:
服务端代码:




客户端代码:




2. 程序运行结果
展示了程序连接服务端后,聊天记录区同时显示明文与密文的交互效果,界面状态从 “已断开” 更新为 “已连接”,消息发送与接收功能正常。
3. LLM 生成程序的优点分析
1.功能完整
自带图形界面,看上去非常高级好看,无需依赖命令行,交互体验更好;支持连接状态实时显示,用户感知更清晰。
2.代码健壮性
采用多线程处理通信,避免界面卡顿;包含 IP / 端口输入校验与连接异常捕获,错误提示更友好~
3.可维护性
采用面向对象设计,代码结构清晰,模块划分明确,真蚌
4.开发效率
无需从零编写基础框架和通用逻辑,LLM 可快速生成可直接运行的完整代码,大幅缩短开发周期;同时能自动适配主流开发规范,减少手动调试成本。
5.易用性与扩展性
界面操作直观简洁,零基础用户也能快速上手使用;代码预留功能扩展接口,后续新增收发数据、日志保存等功能时,无需重构核心代码,拓展更灵活。
4. 问题 && 解决方案
问题:面对程序开发中从未接触过的全新陌生知识点,自身缺乏前期知识积累与逻辑认知,课堂学习时只能被动跟随老师一步步照搬抄写代码,无法自主理解代码背后的编写逻辑、运行原理与设计思路。对于整体项目架构、功能实现流程也仅能摸清浅层大致框架,不清楚每段代码的实际作用,遇到代码微调、功能改动就无从下手,自主思考与独立编写代码的能力不足,难以真正吃透知识。
解决:课后借助 AI 学习工具豆包针对性查漏补缺,将课堂晦涩难懂的陌生知识点逐一拆解梳理,系统整理成条理清晰的学习笔记与知识框架。逐行弄懂代码含义、语法规则以及业务逻辑,摒弃死记硬背、机械敲码的学习模式。循序渐进分层消化重难点内容,从基础语法入手逐步深入核心逻辑,主动推导代码运行流程,反复练习实操巩固所学。同时主动举一反三,尝试脱离示例代码自主仿写、改写程序,慢慢建立独立编程思维,彻底摆脱只会照搬代码的学习困境,真正做到学懂、学透、学以致用。
三、上传的代码
以下是git地址:
第一个任务的server代码
第一个任务的client代码
第二个任务的server代码
第二个任务的client代码
本次实验完成了命令行版和图形界面版两套加密聊天程序,均基于Socket实现通信,并内置简单加密保证消息安全。
命令行版结构简单、逻辑清晰,能完成基本的消息收发与加解密功能,适合理解网络通信原理。但界面单一、依赖控制台操作,用户体验较为基础,仅满足功能验证需求。
图形界面版在命令行版基础上大幅优化,使用Tkinter实现可视化窗口,操作更直观便捷;加入多线程避免界面卡死,同时完善了状态提示、输入检查、错误弹窗等细节,程序稳定性和易用性显著提高,更接近实际可用的工具软件。
总体而言,命令行版适合学习核心原理,图形界面版更注重实用性与用户体验,完整体现了程序从基础实现到优化完善的开发过程。
四、实验感悟与思考
1. 网络编程的核心逻辑理解
本次实验,我对 Socket 通信的 “客户端 - 服务端” 模型有了更系统、更深刻的认识:服务端需要完成绑定 IP 与端口、启动监听、接受客户端连接、循环处理数据请求等一系列固定流程,是整个通信的 “接收方与管理者”;客户端则无需绑定,只需指定目标 IP 和端口,就能主动发起连接,双方通过统一约定的端口建立通信通道,实现数据的双向收发。
在实操过程中,我真正理解了网络通信的底层逻辑 ——IP 用于定位设备,端口用于区分应用程序,只有双方规则一致,才能完成稳定的数据交互。同时,我也体会到网络编程对流程严谨性的要求,无论是连接建立、异常处理,还是数据收发顺序,任何一步出错都会导致通信失败,这让我养成了更细致、更规范的编程习惯。
2. LLM 在编程中的辅助作用
LLM 在本次实验中发挥了不可替代的高效辅助作用,让我切实感受到了人工智能对编程学习与开发效率的巨大提升。它能够快速生成完整的 GUI 图形界面程序,自动集成多线程通信机制,完美解决了命令行程序界面简陋、易卡顿的问题,让程序在实用性和美观度上都有了质的飞跃。
如果仅依靠自主学习和传统编写方式,受限于界面开发、多线程等陌生知识点的学习成本,我很难在短时间内完成第二个实验任务。对比我自主编写的命令行程序,LLM 不仅能快速实现核心功能,还能自动补充输入校验、异常捕获、状态实时提示等健壮性优化,代码结构更规范、容错能力更强、用户体验更友好。
五、参考资料
官方资料
- Python 官方socket库文档
- Python 官方tkinter库文档
- 简单加密算法原理与实现教程 [EB/OL]. [2026-05-14]. https://baike.baidu.com/item/加密算法
- TCP 网络通信流程与 Socket 编程详解 [EB/OL]. [2026-05-14]. https://baike.baidu.com/item/TCP协议
- Python 控制台程序与图形界面程序开发对比 [EB/OL]. [2026-05-14]. https://www.runoob.com/python3/python3-tutorial.html

浙公网安备 33010602011771号