当前位置: 首页 > news >正文

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

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

课程:《Python程序设计》
班级: 2524
姓名: 李昌鸿
学号:20252427
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课

1.实验内容

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

实验要求:
要求1:
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求发送方输入内容,加密后并传输;接收方收到密文并解密和显示。要求:发方和收方同时输出明文和密文。
(3)程序代码托管到码云。
(4)添加文件操作,有加分。(可选项)
要求2:使用LLM生成一个带图形界面的程序
(1)分析关键代码的功能和使用方法
(2)分析生成程序的优点
(3)给出运行过程和结果截图
(4)程序代码托管到码云。

2. 实验过程及结果

1.加密原理:通过XOR加密 + Base64编码的方式实现数据加密
联想截图_20260508171911

2.编写服务器端代码
联想截图_20260508172136
联想截图_20260508172148
联想截图_20260508172201

3.编写客户端代码
联想截图_20260508172301
联想截图_20260508172317
联想截图_20260508172329

4.运行结果(与20252428代林淞同学通信)
服务器端输出:联想截图_20260427205053

客户端输出:联想截图_20260427204937

5.代码托管到码云
联想截图_20260508173405
联想截图_20260508173414

6.添加文件操作
服务器端:
文件发送和接收函数
(1)读取文件二进制内容
(2)文件内容 base64 包装,方便加密传输
(3)发送协议头:FILE|文件名|内容长度
(4)分块发送文件内容(加密)
(5)base64 解码回二进制
(6)保存文件
联想截图_20260508174501
联想截图_20260508174619
处理文件接收
联想截图_20260508175039
联想截图_20260508175116

7.使用LLM生成一个带图形界面的程序
实验设计:
通信协议:选择 TCP 协议(可靠传输,适合聊天 , 文件传输);
加密方案:异或加密+ Base64 编码);
功能分层:基础消息收发为核心,文件传输为加分项,图形界面提升易用性;
协作方式:与队友约定统一密钥、端口,分别运行服务端,客户端互测

图形界面代码分析
(1)界面初始化(init)
创建窗口、布局控件(IP / 端口输入、聊天框、发送按钮)
联想截图_20260508183455
联想截图_20260508183525
联想截图_20260508183540
联想截图_20260508183625
(2)连接功能(toggle_connect)
切换连接 / 断开状态,连接时启动接收线程
联想截图_20260508191822
联想截图_20260508191837
(3)消息收发(send/receive_messages)
加密发送消息,线程接收回复,自动解密并显示明文 / 密文
联想截图_20260508192113
联想截图_20260508192203
联想截图_20260508192213
(4)文件传输(send_file)
选择本地文件,加密分块发送;接收文件时弹窗保存
联想截图_20260508192338
联想截图_20260508192520
联想截图_20260508192531

使用方法:
让队友先启动服务端,我启动图形界面客户端,连接队友的服务端,发送普通消息或文件,最后接收消息或文件。

8.分析大模型代码的优点:
1.可视化。通过变成图表的形式,比输一行指令更清晰。
2.功能完整。包括了连接,断开,消息收发,文件传输,清空记录,功能更全面。
3.中文兼容。设置字体为 “SimHei”,避免中文乱码。

9.运行过程和结果截图
(1)先运行server.py(服务端),控制台显示🚀 服务端启动,监听 0.0.0.0:4444...;
(2)再运行gui_chat.py(客户端),弹出图形界面;
(3)界面中 IP 填127.0.0.1、端口填4444,点击「连接服务端」;
(4)客户端输入消息发送 → 图形界面粉色显示我的消息;
(5)服务端控制台输入回复回车 → 图形界面蓝色显示服务端回复。
联想截图_20260508202449

10.托管到码云
联想截图_20260508203029
联想截图_20260508203035

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

  • 问题1:在和队友运行初始代码时,队友一直连不上我的服务器。,
  • 问题1解决方案:通过终端检查后发现是改了Ipv4没恢复回去,在还原后再连队友的就好了。
  • 问题2:在运行大模型的代码时,图表中一直无法显示出服务端的回复。
  • 问题2解决方案:在豆包的帮助下,改变了代码,最终实现了程序。

其他(感悟、思考等)

这次实验对于编程技术有很大的考验,也做了很久,在队友的帮助下完成了实验,以后还要好好学习python编程。

参考资料

[Python socket]官方文档
[Python tkinter]官方文档
[Python]官方文档

http://www.jsqmd.com/news/778841/

相关文章:

  • UVM验证中的“交通指挥官”:深入浅出搞懂virtual sequence与virtual sequencer的协同调度
  • Spring Boot 3.x项目里,Jakarta包为啥死活导不进来?我花半天才搞明白的依赖作用域坑
  • 自建开源稍后读服务Nagi:Go+Svelte+SQLite构建个人知识库
  • STM32F407驱动SK9822全彩灯珠:从GPIO配置到完整呼吸灯效果(附避坑指南)
  • 整体淋浴房,民宿卫生间,民宿淋浴房,整体卫生间 - 速递信息
  • 别再让用户等!OTT直播卡顿?手把手教你用FCC(快速频道切换)技术优化体验
  • 编程问题,it问题方法论
  • Godot开发者必备:Awesome Godot资源合集使用指南
  • 从卡尔曼滤波到推荐系统:深入浅出聊聊Woodbury恒等式在工程里的那些‘神操作’
  • 保姆级教程:在Ubuntu 20.04上从YOLOv5 v5.0训练到RK3588 NPU部署的完整避坑指南
  • 115proxy-for-Kodi:终极云端观影解决方案指南
  • 2025届最火的十大AI学术助手推荐榜单
  • 从硬件连接到软件调试:手把手教你用74HC165扩展STM32的输入口(含3片级联实战)
  • 1500对工业图像:DeepPCB如何重塑电路板缺陷检测的技术范式
  • Windows命令行光标精确定位工具elocate:提升批处理脚本交互体验
  • 美文阅读 | 随机美文
  • 开源保险理赔自动化工具InsurClaw:架构设计与工程实践全解析
  • 非标准真实工业世界”
  • 避坑指南:Android分屏开发中,SystemServer端那些容易忽略的Task生命周期与配置变更细节
  • WSL安装Ubuntu后必做的5件事:从换源、配SSH到安装GUI,让你的子系统真正好用起来
  • 不止是get_by_text:解锁Playwright定位的5个高阶技巧,让你的测试脚本更‘聪明’
  • 蓝牙低功耗技术演进与物联网应用实战解析
  • ASRock 4X4 BOX-5000迷你PC评测:Zen3小钢炮实战解析
  • Taotoken用量看板如何帮助团队清晰掌握各模型消耗详情
  • 给OpenWrt LuCI界面写个插件:从看懂CBI模型到实现一个配置页(附完整代码)
  • Windows Update 错误 0x80240037 解决方法
  • 硬件设计IDE困境与破局:从封闭生态到开放工具链的演进
  • 钢厂钢卷库位的行列思考:不止是顺序,更是效率与规范的博弈
  • 别再只会调接口了!手把手教你用Spring Security OAuth2自定义授权码生成和存储(附完整代码)
  • 别再用Fiddler当‘开关’了!一招更新Windows根证书,彻底解决应用商店和VSCode插件连不上网