20254311实验三《Python程序设计》实验报告

学号 2025-2026-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 2543
姓名: 孙小涵
学号:20254311
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课

1.实验内容

1.1个人编程与队友互相通信

1.创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
2.要求发送方输入内容,加密后并传输;接收方收到密文并解密和显示。要求:发方和收方同时输出明文和明文。
3.程序代码托管到码云。
4.添加文件操作,有加分。(可选项)

1.2使用LLM生成一个带图形界面的程序

1.分析关键代码的功能和使用方法
2.分析生成程序的优点
3.给出运行过程和结果截图
4.程序代码托管到码云。

2. 实验过程及结果

2.1个人编程与队友互相通信

2.1.1创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序
服务端代码
屏幕截图 2026-05-05 094449
客户端代码
屏幕截图 2026-05-05 094458
2.1.2发送方输入内容,加密后并传输;接收方收到密文并解密和显示
本机为客户端,本机截图
屏幕截图 2026-05-05 094953
本机为客户端,服务端截图
微信图片_20260505104157_46281_47
本机为服务端,本机截图
屏幕截图 2026-05-05 101120
本机为服务端,客户端截图
微信图片_20260505104158_46282_47
2.1.3程序代码托管到码云
屏幕截图 2026-05-05 105244
2.1.4添加文件操作
屏幕截图 2026-05-05 105732

2.2使用LLM生成一个带图形界面的程序

2.2.1关键代码的功能和使用方法
关键代码的功能:

  1. 双向通信实现
    服务端:监听并接受一个客户端连接后,启动独立线程 _receive_loop 不间断调用 recv_encrypted_with_cipher 接收消息。同时主线程响应用户界面上的“发送”操作,通过已连接的 client_sock 调用 send_encrypted 发送消息。
    客户端:连接成功后同样启动接收线程,界面发送操作通过同一个 socket 发送消息。
    双方维持长连接,直到一方关闭窗口或网络断开。
  2. 加密传输与显示
    发送时先对明文 XOR 加密,然后发送 4字节长度前缀和密文字节。
    接收方首先读取长度,再循环读满指定长度的密文,解密后得到明文。
    显示要求:每次发送后,发送方的界面上会显示 [我发送] 标记的密文和明文;接收方收到后显示对方的密文和明文。完全满足“发方和收方同时输出明文和明文”。
  3. 图形界面
    两个角色窗口布局相同,分为“接收到的消息”(显示密文Hex和解密明文)和“发送消息”区域。
    按钮支持加密发送、清空发送框、清空接收区。
    底部状态栏实时显示连接状态。
    使用方法:
    1.运行程序,出现启动界面。
    2.点击 “启动服务端 (接收方)”,设置端口(如1111),服务端窗口打开,等待连接。
    3.再次运行程序,点击 “启动客户端 (发送方)”,输入相同端口和服务端IP。
    4.客户端连接成功后,两个窗口的状态栏都会显示已连接。
    5.任意窗口在“发送消息”区域输入文字,点击“加密并发送”,对方窗口的接收区会显示密文和明文,发送方自己的接收区也会以 [我发送] 记录自己发出的密文和明文。
    6.双方可以轮流或同时发送消息,实现双向对话。
    7.关闭任一窗口都会释放连接,另一方会收到断开提示。
    2.2.2分析生成程序的优点
    1.基于长连接+接收线程,双方均可随时主动发送。
    2.使用 XOR 加密,并完整展示加密前后的数据(十六进制密文)。
    3.通过长度前缀保证消息边界,消息大小无限制。
    4.网络异常、连接断开均有提示,资源正确关闭。
    2.2.3运行过程和结果截图
    程序截图
    屏幕截图 2026-05-05 110140
    屏幕截图 2026-05-05 110202
    屏幕截图 2026-05-05 110151
    屏幕截图 2026-05-05 110217
    屏幕截图 2026-05-05 110242
    屏幕截图 2026-05-05 110230
    屏幕截图 2026-05-05 110254
    屏幕截图 2026-05-05 110304
    运行过程
    屏幕截图 2026-05-05 101708
    微信图片_20260505104201_46284_47
    微信图片_20260505104202_46285_47
    2.2.4程序代码托管到码云
    屏幕截图 2026-05-05 105244

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

  • 问题1:输入exit后代码无法保留
  • 问题1解决方案:将print("服务端已关闭")改为input("服务端已关闭")
  • 问题2:deepseek生成代码无法链接客户端
  • 问题2解决方案:反复询问deepseek,直到代码可运行

仓库地址

posted @ 2026-05-05 11:22  小寒0702  阅读(4)  评论(0)    收藏  举报