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端口→监听→等待连接。
image
客户端:创建socket对象→主动连接服务端。
image

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

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

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

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

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

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

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

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

  • 关键代码的功能和使用方法
    a.DES加密/解密函数
    image
    功能:对字符串进行DES对称加密/解密,使用Base64编码让密文可安全传输。
    使用:两端密钥必须相同,发送前调用des_encrypt,接收后调用des_decrypt。

b.多线程接收消息

threading.Thread(target=self.receive_messages, daemon=True).start()

功能:在后台线程持续监听Socket消息,不阻塞UI主线程。
使用:程序启动后自动运行,收到消息后通过pyqtSignal更新界面。

c.PyQt5信号与槽
image
功能:跨线程安全更新UI,避免直接在后台线程操作控件导致崩溃。
使用:后台线程发出信号,主线程的槽函数执行界面更新。

  • 生成程序的优点
    a. 图形界面友好:相比命令行,GUI更直观,聊天记录清晰,支持键盘回车发送。
    b. 多线程不卡顿:后台线程处理Socket通信,UI始终响应,不会因等待消息而卡住。
    c. 自动状态提示:顶部标签实时显示连接状态,方便调试和确认通信情况。
    d. 安全退出处理:关闭窗口时自动关闭 Socket 连接,避免端口占用和资源泄漏。

(8)将程序上传至git
ebecff39f640fd565c53db69e68f2361

3. 实验过程中遇到的问题和解决过程

  • 问题1:客户端无法连接服务端
  • 问题1解决方案:客户端绑定的IP地址错误,修改为服务端IP后即可连接

其他(感悟、思考等)

通过本次实验,我熟练掌握了 TCP Socket 网络编程的基本流程,深入理解了服务端与客户端之间的通信原理与交互机制;同时学会了 DES 对称加密算法的实际使用方法,深刻认识到数据加密在网络传输中的安全价值与重要意义;此外也切实体会到多线程并发处理、图形界面编程在实际软件开发项目中的关键作用与实用价值。

参考资料

posted @ 2026-05-05 17:13  ani2023  阅读(14)  评论(0)    收藏  举报