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

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

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

课程:《Python程序设计》
班级: 2523
姓名: 杨淇麟
学号:20252321
实验教师:XXX
实验日期:2026年4月27日
必修/选修: 公选课

1.实验内容

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

(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

(2)要求发送方输入内容,加密后并传输;接收方收到密文并解密和显示。要求:发方和收方同时输出明文和明文。

(3)程序代码托管到码云。

(4)添加文件操作,有加分。(可选项)

要求2:使用LLM生成一个带图形界面的程序

(1)分析关键代码的功能和使用方法

(2)分析生成程序的优点

(3)给出运行过程和结果截图

(4)程序代码托管到码云。

2. 实验过程及结果

基于 Python socket 库,采用 TCP 协议 实现服务端与客户端一对一通信,双方循环收发消息,输入 exit 断开连接。
服务端
1.导入 socket 库
2.创建 TCP 套接字对象
3.定义服务器 IP 和端口
4.绑定 IP 和端口
5.开启监听模式
6.接受客户端连接
7.循环收发消息
8.关闭资源
屏幕截图 2026-04-27 200509
客户端
1.导入 socket 模块
2.创建客户端 TCP 套接字
3.定义服务端 IP 和端口
4.连接服务端
5.打印连接成功提示
6.开启无限循环
7.输入并发送消息
8.接收并打印服务端消息
9.关闭客户端连接
屏幕截图 2026-04-27 201506
运行的时候服务端先运行,客户端后运行,即可在终端互相收发消息

本次使用大模型 LLM 快速生成基于 Python Tkinter 图形界面 + Socket 局域网聊天程序,包含 GUI 客户端、服务端,支持两台电脑同一局域网双向通信,完全满足课程要求。
tkinter
Python 内置 GUI 库,无需额外安装,用于创建窗口、聊天显示框、输入框、发送按钮,实现可视化图形界面。
socket
网络通信核心库,实现 TCP 协议服务端监听、客户端连接、数据收发,完成跨设备局域网传输。
threading多线程
单独开启子线程循环接收服务端消息,解决 GUI 界面阻塞问题,实现收发消息同时进行。
两台设备连接同一个 WiFi / 局域网;
查看服务端电脑 IPv4 地址,修改代码中 IP 与端口;
先运行服务端程序,开启端口监听;
另一台电脑运行 GUI 图形客户端,自动连接服务端;
在图形界面输入文字,点击发送,双向实时聊天;
关闭窗口即可断开连接,结束程序。
可视化图形界面
摒弃原生控制台黑框交互,采用窗口化 GUI 设计,操作直观简单,人机交互体验更好。
架构规范、稳定性强
采用多线程分离收发逻辑,避免界面卡顿、卡死,TCP 长连接通信,数据传输稳定不丢失。
适配局域网跨设备通信
支持同一局域网下两台不同电脑连接通信,突破本地单机运行限制,实用性强。
轻量化易运行
基于 Python 内置库开发,无需安装第三方依赖,代码简洁、注释清晰,易修改、易调试。
开发效率极高
通过 LLM 快速整合 GUI 界面 + 网络通信代码,大幅降低代码编写难度,缩短开发周期。
可拓展性强
可后期增加表情包、文件传输、用户昵称、聊天记录保存等功能,拓展空间大。

屏幕截图 2026-04-27 205533

屏幕截图 2026-04-27 205536

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

  • 问题1:data 变量未定义
  • 问题1解决方案:加上了定义
  • 问题2:变量名 coon 和 conn 混用
  • 问题2解决方案:修改了拼写错误

其他(感悟、思考等)

体会到LLM在辅助编程、快速生成可用代码方面的便利性,学会了对生成的代码进行分析、优化和调试,而不是直接依赖生成结果。

实验过程中遇到的各种报错,也锻炼了我排查问题、调试代码的能力,让我明白网络编程不仅需要正确的代码逻辑,还需要考虑环境配置、网络设置等多方面因素。这次实验为我后续学习更复杂的网络通信程序打下了基础,也让我对Python在网络编程领域的应用有了新的认识。

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

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

  • ...

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

相关文章:

  • Bodymovin 插件终极指南:3步将After Effects动画变成网页魔法
  • JTS 核心几何类型详解:从点到多边形的完整解析
  • 抖音批量下载工具:自动化内容获取与高效文件管理方案
  • GitHub记忆增强工具:基于向量搜索与知识图谱的开发者效率解决方案
  • 如何利用Hono框架的ETag与Cache API实现毫秒级缓存优化
  • 终极Material Design Lite引导提示:Tooltip组件完全指南
  • Clinstagram:为AI智能体设计的Instagram双后端自动化工具
  • LibreCAD终极指南:为什么这款免费开源2D CAD软件是AutoCAD的最佳替代品
  • JTS Topology Suite 入门指南:Java 向量几何库的快速上手教程
  • 比亚迪DiLink 4.0车机Root保姆级教程:从固件提取到Magisk修补,手把手带你解锁ADB调试
  • 游戏开发进入AI时代:你准备好了吗?从工具到生产力:AI如何重塑Unity开发体系
  • 大湾区与狮城:亚洲 Web3、Fintech 与家族办公室 IT 架构师的双城记
  • 思源宋体深度解析:从技术原理到实战应用的全面掌握
  • 20252426汪裕植 2025-2026-5《Python程序设计》实验3报告
  • 别再死磕公式了!用PyTorch实战MINE(Mutual Information Neural Estimation),5步搞定神经网络互信息估计
  • OmenSuperHub终极指南:免费解锁惠普游戏本性能的完整教程
  • AWS RDS监控终极指南:10个关键指标深度解析与性能优化
  • 本地优先AI工作空间AzulClaw:安全架构与混合部署实践
  • PvZ Toolkit:开源植物大战僵尸修改器的终极完整指南
  • Cadence IC617新手避坑指南:从零搭建MOS仿真环境(附TSMC18rf库配置)
  • 用户Git提交里带个文件名,Claude竟偷偷扣光200美元?Anthropic这波操作真离谱!
  • 如何实现Docsify文档站点的可持续发展:环保与资源优化终极指南
  • 从零开始:如何用耶鲁OpenHand开源机械手打造你的第一台机器人抓取系统
  • 基于提示工程的文本匿名化技术实践
  • IO多路复用深度面试指南:原理、差异、坑点与高频面试题
  • 别再只盯着CPU了!用top -c命令揪出Linux里那些‘伪装’的进程(附排查实战)
  • 【工业物联网安全红线】:C语言工业网关Modbus协议栈3大未公开漏洞(2024年CVE-2024-XXXXX实测复现)
  • BLHeli编程适配器制作指南:低成本DIY专业烧录工具
  • 扩散模型在自动驾驶世界建模中的应用与优化
  • plumber实战:10个常用场景示例详解