20232223 实验三《Python程序设计》实验报告
学号 2025-2026-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2322
姓名: 夏韵诗
学号:20232223
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课
1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
要求一:
- (1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
- (2)要求发送方输入内容,加密后并传输;接收方收到密文并解密和显示。要求:发方和收方同时输出明文和明文。
- (3)程序代码托管到码云。
要求二:
- (1)分析关键代码的功能和使用方法
- (2)分析生成程序的优点
- (3)给出运行过程和结果截图
- (4)程序代码托管到码云。
2. 实验过程及结果
(1)建立 TCP Socket 连接,服务端监听端口,客户端主动连接。
服务端:创建socket对象→绑定IP端口→监听→等待连接。

客户端:创建socket对象→主动连接服务端。

(2)集成 DES 对称加密算法
发送方:输入明文→调用des_encrypt加密→发送密文。

接收方:接收密文→解密→显示明文

(3)实现双向收发消息,服务端与客户端均可主动发送
通过 while True 循环,先收后发或先发后收交替执行。
双方都能输入消息并发送,也能实时接收对方消息。


(4)控制台同时输出明文+密文
接收时:打印对方明文+对方密文

发送时:打印自己明文+自己密文

(5)同一主机两个程序相互通信
设置服务器IP=127.0.0.1,端口号4444,保证客户端与服务器一致。
先启动服务端,再启动客户端进行连接。


(6)与队友进行通信
队友:20253231秦一萱
与队友连接同一网络,将IP手动修改为学号。
先启动服务端,再启动客户端进行连接。


(7)LLM生成一个带图形界面的程序

- 关键代码的功能和使用方法
a.DES加密/解密函数
![image]()
功能:对字符串进行DES对称加密/解密,使用Base64编码让密文可安全传输。
使用:两端密钥必须相同,发送前调用des_encrypt,接收后调用des_decrypt。
b.多线程接收消息
threading.Thread(target=self.receive_messages, daemon=True).start()
功能:在后台线程持续监听Socket消息,不阻塞UI主线程。
使用:程序启动后自动运行,收到消息后通过pyqtSignal更新界面。
c.PyQt5信号与槽

功能:跨线程安全更新UI,避免直接在后台线程操作控件导致崩溃。
使用:后台线程发出信号,主线程的槽函数执行界面更新。
- 生成程序的优点
a. 图形界面友好:相比命令行,GUI更直观,聊天记录清晰,支持键盘回车发送。
b. 多线程不卡顿:后台线程处理Socket通信,UI始终响应,不会因等待消息而卡住。
c. 自动状态提示:顶部标签实时显示连接状态,方便调试和确认通信情况。
d. 安全退出处理:关闭窗口时自动关闭 Socket 连接,避免端口占用和资源泄漏。
(8)将程序上传至git

3. 实验过程中遇到的问题和解决过程
- 问题1:客户端无法连接服务端
- 问题1解决方案:客户端绑定的IP地址错误,修改为服务端IP后即可连接
其他(感悟、思考等)
通过本次实验,我熟练掌握了 TCP Socket 网络编程的基本流程,深入理解了服务端与客户端之间的通信原理与交互机制;同时学会了 DES 对称加密算法的实际使用方法,深刻认识到数据加密在网络传输中的安全价值与重要意义;此外也切实体会到多线程并发处理、图形界面编程在实际软件开发项目中的关键作用与实用价值。

浙公网安备 33010602011771号