20242208 2025-2026-2 《Python程序设计》实验3报告

20242208 2025-2026-2 《Python程序设计》实验3报告

课程:《Python程序设计》
班级: 2422
姓名: 韩岳航
学号: 20242208
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课

1.实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

2.实验过程及结果

任务一:

1.编写服务端与客户端程序

(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求发送方输入内容,加密后并传输;接收方收到密文并解密和显示。要求:发方和收方同时输出明文和密文。

2.与 20252211陈鸿超 同学合作,双方同联一个热点,通过手动分配IP地址,实现通信演示程序。

(1)我作为服务端(10.226.148.8),在电脑上运行服务端程序,监听端口为8888,等待客户端连接。
(2)20252211陈鸿超同学在电脑上运行客户端程序,连接服务端(10.226.148.8)的8888端口。
(3)客户端输入明文,加密后将明文并显示明文和密文。
(4)服务端收到明文,解密后显示明文和密文。
(5)双方调换发文和收文角色,重复实验。
(6)实验结果如下图所示:

9a5b0cb6e24baac892d2819b9c0d0b4e

(1)20252211陈鸿超同学作为服务端,在电脑上运行服务端程序,监听端口为8888,等待我连接。
(2)我在电脑上运行客户端程序,连接服务端的8888端口。
(3)客户端输入明文,加密后将明文并显示明文和密文。
(4)服务端收到明文,解密后显示明文和密文。
(5)双方调换发文和收文角色,重复实验。
(6)实验结果如下图所示:

7f7fe54c31f959c57f0e333a926266cb

3.程序代码托管到码云

码云
0fad82787166cfc4d987e0168b0291b5

任务二:

1.使用LLM生成带图形界面的客户端与服务端程序:

2.再次与 20252211陈鸿超 同学合作,双方同联一个热点,通过手动分配IP地址,实现通信演示程序。

(1)我作为服务端(10.226.148.8),在电脑上运行服务端程序,监听端口为8888,等待客户端连接。
(2)20252211陈鸿超同学在电脑上运行客户端程序,连接服务端(10.226.148.8)的8888端口。
(3)客户端输入明文,加密后将明文并显示明文和密文。
(4)服务端收到明文,解密后显示明文和密文。
(5)双方调换发文和收文角色,重复实验。
(6)实验结果如下图所示:

b7ed812667a729ca3e4907804f9a2c65

(1)20252211陈鸿超同学作为服务端,在电脑上运行服务端程序,监听端口为8888,等待我连接。
(2)我在电脑上运行客户端程序,连接服务端的8888端口。
(3)客户端输入明文,加密后将明文并显示明文和密文。
(4)服务端收到明文,解密后显示明文和密文。
(5)双方调换发文和收文角色,重复实验。
(6)实验结果如下图所示:

e8165c362e1f5b131e5d32cb87583408

3.分析关键代码的功能和使用方法

(1)加密与解密模块
KEY = 0x55

def encrypt(msg: str) -> bytes:
    plain_bytes = msg.encode("utf-8")
    return bytes(b ^ KEY for b in plain_bytes)

def decrypt(data: bytes) -> str:
    return bytes(b ^ KEY for b in data).decode("utf-8")
功能:实现简单的异或(XOR)加密。每个字节与固定密钥 0x55 进行按位异或,加解密使用同一函数(对称性)。
作用:对聊天内容进行基本混淆,防止明文直接暴露在网络中。虽然安全性很低,但足以演示加密通信的基本思想。
(2)客户端 ClientGUI
连接设置
网络线程 client_thread
发送消息 send_message
(3)服务端 ServerGUI
连接设置
网络线程 server_thread
接收消息 receive_message
发送消息 send_message

4.生成程序的优点分析

  • 优点1:教学演示价值高
  • 优点2:界面友好,操作简单
  • 优点3:代码结构清晰,易于扩展
  • 优点4:双重展示密文/明文
  • 优点5:典型网络通信模型的完整实现

5.程序代码托管到码云

码云
0fad82787166cfc4d987e0168b0291b5

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

  • 问题1:运行代码时显示缺少gmssl包,且运行pip install命令时提示pip命令无法识别。
  • 问题1解决方案:配置环境变量,不通过pip命令直接下载gmssl
  • 问题2:配置ip后双方无法连接通信
  • 问题2解决方案:经过排查发现网络防火墙未关闭,上网搜索教程后解决问题,双方可以通信

其他(感悟、思考等)

  • 这次实验让我深入理解了Socket通信基本原理,并体验了与同学联机调试的协作过程。亲手解决防火墙、环境变量等实际问题,让我意识到理论与实践结合的重要性。

参考资料

posted on 2026-05-01 10:45  cobess  阅读(6)  评论(0)    收藏  举报