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

20252203傅冀蒙 2025-2026-2 《Python程序设计》实验三报告

20252203 2025-2026-2 《Python程序设计》实验3报告
课程:《Python程序设计》
班级:2522
姓名:傅冀蒙
学号:20252203
实验教师:王志强
实验日期:2026年4月27日
必修/选修: 公选课
1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
2.实验过程及结果(队友20252211陈鸿超)
1.要求1
加密算法:采用Base64编码作为“加密”手段,利用base64库实现明文的编码(加密)与解码(解密)。
服务端:绑定本地端口5656,接收客户端连接后持续接收密文,解密后打印明文,并回复确认信息。

server

连接成功后显示提示信息,发送时同时输出明文和对应的密文,发送完成后显示确认信息。

客户端:连接服务端后,支持键盘输入模式。

client

显示收到的密文以及解密后的明文内容。
文件操作:服务端将解密后的内容追加保存到本地文件中。服务端自动生成接收文件,内容与客户端发送的源文件完全一致。
代码分析:这两段代码实现了基于 Socket 的 TCP 通信,配合 Base64 编码进行简单的数据混淆传输。程序采用控制台交互模式,逻辑结构为同步阻塞式:即“发送消息后等待接收,接收消息后等待发送”。这种方式虽然代码逻辑直观、易于理解,但通信过程必须严格轮流进行,一方不发送时另一方就会卡住等待,无法实现实时的双向自由聊天

2.用LLM生成一个带图形界面的程序
提示词:请扮演Python专家,使用tkinter库和socket模块编写一个加密通信程序。要求实现服务端和客户端两个窗口,核心功能包括:1. 建立TCP连接;2. 发送方输入明文后,使用凯撒密码(位移3)加密再发送,并在界面显示明文和密文;3. 接收方收到密文后自动解密,并在界面显示解密后的明文和原始密文;4. 使用多线程处理消息接收,确保界面不卡顿。请提供完整的、可直接运行的Python代码。
服务端:

LLMserver

客户端:

LLMclient

运行截图:

LLM对话

代码分析:这两段代码构建了基于 Tkinter 的图形化界面聊天室,并使用了凯撒密码进行加密。其核心优势在于引入了多线程技术,将“消息接收”功能放入独立的后台线程中运行,实现了非阻塞的异步通信。这使得程序能够一边在后台监听对方消息,一边允许用户在图形界面上自由输入,配合可视化的聊天记录显示,具备了现代即时通讯软件的基本形态,用户体验和程序的健壮性远高于纯控制台的同步代码。
优点:AI 编写的代码在架构设计和用户体验上实现了质的飞跃,它利用多线程技术完美解决了传统 Socket 通信中“发送与接收互斥阻塞”的难题,实现了真正的双向实时并发通信;同时,它引入了图形用户界面(GUI)替代了简陋的控制台,不仅让交互更加直观友好,还通过面向对象的结构封装提升了代码的规范性与可扩展性,使其更接近成熟的商业软件标准。
3.上传到gitee

三gitee

3.实验过程中遇到的问题和解决过程
问题一:和队友始终无法成功连接
问题一解决方案:发现两个人连的不是同一个WIFI,更改后就好了
其他
写代码可以自己写完之后让AI大模型再写一版,对照自己的找出可以借鉴的地方。
 参考资料
-  《Java程序设计与数据结构教程(第二版)》

-  《Java程序设计与数据结构教程(第二版)》学习指导

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

相关文章:

  • **发散创新:基于Go语言构建高可用分布式数据库的实践与优化**在现代微服务架构中,*
  • 封海外是否可以阻断海外流量攻击
  • PyCharm里用不了mxnet?手把手教你关联Anaconda虚拟环境(图解配置)
  • Elasticsearch性能巅峰:JVM调优全攻略,从原理到生产配置一步到位
  • 告别跑现场!用Sovit2D零代码快速搭建一个Web版HMI监控大屏
  • Unity手游防外挂加固方案怎么选?从防GG修改器到反调试的完整攻略
  • AXI-FULL信号太多看不懂?这篇帮你划重点:FPGA开发中真正要关心的5个核心信号与3个固定值
  • KEYSIGHT N9040B 高端信号与频谱分析仪使用说明书
  • 2026年铝艺厂家品牌推荐/铝艺大门,别墅庭院大门 - 品牌策略师
  • 告别‘震耳欲聋’:5分钟搞定RK3568开发板的系统音量默认值(修改设备树参数)
  • 用open62541库搞工业数据采集?手把手教你搭建OPC UA服务端与客户端(附完整C代码)
  • 避坑指南:博途程序加密后忘记密码怎么办?手把手教你用存储卡清除S7-1200 PLC密码
  • 为什么嵌入式开发中,不直接用print打印,而是先用sprintf先整合为字符串。
  • Image2 + MiniMax CLI,一句话到成片。拆解 MiniMax CLI 的Agent 设计哲学
  • Deepoc 具身模型开发板赋能智能轮椅自主随行与安全控制技术研究
  • MCU+WiFi与CPU+WiFi模块区别
  • 如何在Mac上免费实现NTFS完美读写?终极解决方案来了!
  • 猫抓:开源浏览器资源嗅探插件,高效捕获网页视频音频的一站式解决方案
  • P1387 最大正方形 题解
  • 程序员编程助手科技股份有限责任公司AIRecomandationWebSys技术经理四川大学计算机学院毕业生技术官微软技术工程师12年工作经验后端技术微软工程师
  • ARC 练习
  • 涂鸦IoT开发避坑指南:从日志打印到线程管理,这些TuyaOS API细节新手最容易踩坑
  • 嘉为蓝鲸亮相中物院超级计算与数智工程年会,以精益价值流赋能军工软件工厂建设
  • 【卫星】基于LoRaWAN LR-FHSS直达卫星场景的分析与Matlab仿真
  • Altium Designer新手必看:如何像老手一样管理你的元件库(从SnapEDA下载到本地库整合)
  • 物料管理系统功能拆解:物料管理系统如何解决库存积压与生产缺料难题
  • Postman调试海康ISAPI接口全记录:从鉴权到改设备名,一次搞定
  • 高效B站评论数据采集方案:如何快速获取完整评论信息
  • xAI发布Grok Voice Think Fast 1.0,多场景夺冠,“边想边说”优势显著!
  • NCM格式解密完全指南:三分钟掌握网易云音乐转换核心技术