20252326 2025-2026-2 《Python程序设计》实验三报告
20252326 2025-2026-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2523
姓名: 余锦豪
学号:20252326
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课
1. 实验内容
本次实验的核心目标是掌握Python中Socket套接字编程的基础方法,实现基于TCP协议的客户端与服务端通信,具体分为两个要求:
- 要求1:编写并运行TCP服务端与客户端程序,实现双向消息收发,与队友完成局域网内互相通信,并完成角色互换。
- 要求2:使用LLM生成带图形界面的Socket程序,分析关键代码功能、程序优点,完成运行测试,并将代码托管至Gitee平台。
2. 实验过程及结果
2.1 要求1:基础Socket通信实现
2.1.1 实验准备
- 环境配置:在Windows系统中使用PyCharm作为开发工具,Python版本为3.12,确保socket库可正常导入使用。
- 网络准备:确认本机IPv4地址为
192.168.43.4,与队友处于同一局域网,端口约定使用8888,避免端口占用问题。
2.1.2 服务端与客户端程序实现
- 服务端程序:创建TCP套接字对象,绑定
0.0.0.0和端口8888,开启监听并等待客户端连接,使用while True循环持续接收客户端消息,接收后打印明文内容,再通过控制台输入回复并发送给客户端。 - 客户端程序:创建TCP套接字对象,连接服务端的IP与端口,同样使用
while True循环实现消息的持续发送与接收,控制台实时显示服务端的回复。
2.1.3 运行与通信测试
- 本机测试:先启动服务端程序,再启动客户端程序,双方可通过控制台输入消息实现实时对话,无消息丢失或乱码问题。
- 与队友(20252321 杨淇麟)通信:修改客户端代码中的
HOST为队友的IPv4地址,成功建立连接并完成对话;角色互换后,队友开启服务端,我再以客户端连接,完成双向通信,满足“每人同时完成客户端与服务端角色”的要求。


加入加密解密的修改如下:


2.1.4 代码托管
本次Socket程序代码已上传至Gitee平台,公开仓库地址为:
https://gitee.com/rainfallllll/python-project
老师可直接访问查看完整代码。
2.2 要求2:带图形界面的Socket程序实现
2.2.1 关键代码的功能和使用方法分析
借助大模型生成了简易图形界面聊天程序。主要利用窗口组件实现页面显示,结合网络代码完成消息发送与接收,同时加入简单加密功能,收发消息可以看到原文和加密内容。
2.2.2 生成程序的优点分析
图形界面操作简单,不用命令行输入。聊天内容展示清楚,运行简单稳定,上手容易,适合基础学习使用。
2.2.3 运行过程和结果说明
分别打开图形版服务端和客户端,输入对方IP即可连接通信。发送消息后,双方界面都能正常展示明文与密文,程序运行正常,通信稳定。



2.2.4 代码托管
图形界面程序代码已统一上传至Gitee仓库:
https://gitee.com/rainfallllll/python-project
3. 实验过程中遇到的问题和解决过程
-
问题1:
ipconfig命令无法执行,无法获取本机IPv4地址 -
问题现象:CMD输入
ipconfig提示不是内部或外部命令。 -
解决方案:通过Windows设置→网络和Internet直接查看IPv4地址,成功获取
192.168.43.4。 -
问题2:服务端绑定本机IP后,客户端无法连接
-
问题现象:客户端提示连接被拒绝。
-
解决方案:服务端HOST改为
0.0.0.0,开放所有网卡访问,关闭防火墙拦截后成功连接。 -
问题3:运行报错
NameError: name 'data' is not defined -
问题现象:接收数据未赋值给变量直接打印。
-
解决方案:添加
data = conn.recv(1024).decode("utf-8")完成变量赋值。 -
问题4:只能发送一条消息程序就关闭
-
问题现象:未加循环,通信一次就结束。
-
解决方案:添加
while True循环,实现持续聊天功能。
其他(感悟、思考等)
体会到LLM在辅助编程、快速生成可用代码方面的便利性。
实验过程中遇到的各种报错,也锻炼了我排查问题、调试代码的能力,让我明白网络编程不仅需要正确的代码逻辑,还需要考虑环境配置、网络设置等多方面因素。这次实验为我后续学习更复杂的网络通信程序打下了基础,也让我对Python在网络编程领域的应用有了新的认识。
浙公网安备 33010602011771号