20253407 2025-2026-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2534
姓名: 吴家豪
学号:2534
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课
1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
2. 实验过程及结果
我写的
服务端
Gitee
它通过 active_clients 列表支持多个连接,使用了偏移量为 5 的加密算法,并通过 save_log 模块将包含时间的明密文对照数据保存到本地文件。
运行结果

客户端
Gitee
这个程序一边聊天一边就存储了,存储到了和文件位置相同的文件夹
运行结果

LLM写的
Gitee
分析
他写的主要有四个部分:加密、交互界面、Socket网络以及文件。
- 加密/解密逻辑用的是凯撒密码的衍生物,加密是将字符的 ASCII 码向右偏移 5 位。解密是将字符的 ASCII 码向左还原 5 位。
- 网络功能:作为服务端: 输入端口号,点击“启动服务端”,程序将处于待机状态。作为客户端: 输入目标 IP 和端口,点击“连接服务端”。
- 文件存储功能:用户无法手动修改聊天记录,只能查看
- 文件操作功能: 利用 filedialog 弹窗,将当前文本框内的所有通信记录导出为 .txt 文件。点击界面底部的“保存聊天记录”按钮,就能选择保存路径。
运行
我当服务端

我当客户端

代码优点
1.界面直观,功能一目了然
2.代码整洁,结构很清晰,加密、界面初始化、网络连接都分块写好了。
3.不容易崩溃,程序里加了不少 try-except 的异常处理,还有弹窗提醒(如 messagebox.showerror)
4.运行方便,不需要安装第三方库,复制到同学的电脑上直接就能跑。
3. 实验过程中遇到的问题和解决过程
- 问题1:连接不上别人的电脑
- 问题1解决方案:把防火墙关了
其他(感悟、思考等)
手写代码才觉得客户端要比服务端复杂了很多很多。之前c语言学过凯撒密码,到这次才真正的应用了,感觉很神奇。
参考资料
-
《Java程序设计与数据结构教程(第二版)》
-
《Java程序设计与数据结构教程(第二版)》学习指导
-
...
