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

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

实验三 Socket编程技术实验报告

姓名:秦一萱
学号:20253231
队友:夏韵诗(学号:20232223)
实验环境:Windows 物理机、华为ECS服务器(OpenEuler)
开发工具:PyCharm、IDLE、VIM
实验日期:2026.04.27


一、实验目的

  1. 利用 Python 编写 TCP 服务端与客户端,基于 Socket 完成点对点通信。
  2. 熟练掌握 IP+端口绑定、监听、连接、数据收发完整流程。
  3. 了解加密通信机制与数据安全传输原理,具备密码通信拓展能力。
  4. 使用 LLM 生成创意单人本地GUI程序,学习图形界面开发。
  5. 交替充当客户端、服务端,与队友完成双向通信,代码上传码云托管。

二、实验原理

TCP 是面向连接的可靠传输协议,通信前需三次握手建立连接。

  • 服务端:创建套接字→绑定地址端口→监听→等待客户端接入
  • 客户端:创建套接字→主动连接服务端 IP 与端口
  • 双方建立连接后,通过 send()recv() 完成数据双向传输
  • 本次联调使用明文传输便于调试,已掌握对称加密、加解密传输理论与实现方法,可快速改造为密文通信。

三、基础控制台通信实现

3.1 服务端代码(SockeServer.py)

# -*- coding: utf-8 -*-
# 文件名: SockeServer
# 描  述:
# 作  者: besti
# 日  期: 2026/4/27
import socket #创建TCP Socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#学号:20253231
HOST = "192.168.43.31"
PORT = 4444server.bind((HOST, PORT))
server.listen(1)
print("服务端已经启动,等待客户端连接......")conn, addr = server.accept()
print(f"已连接客户端:{addr}")while True:#接收消息data = conn.recv(1024).decode("utf-8")if not data or data == "exit":print("聊天结束")breakprint(f"客户端:{data}")send_msg = input("我:")conn.send(send_msg.encode("utf-8"))if send_msg == "exit":breakconn.close()
server.close()

3.2 客户端代码(SocketClent.py)

# -*- coding: utf-8 -*-
# 文件名: SocketClent
# 描  述:
# 作  者: besti
# 日  期: 2026/4/27
import socketclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)HOST = "192.168.112.23"
PORT = 4444client.connect((HOST, PORT))
print("已连接服务端!输入exit退出聊天!")
while True:#发送数据send_msg = input("我:")client.send(send_msg.encode("utf-8"))if send_msg == "exit":break#接收数据data = client.recv(1024).decode("utf-8")if not data or data == "exit":print("聊天结束")breakprint(f"\n服务端:{data}")client.close()

3.3 通信截图运行说明

服务端运行效果

449bdfa49dab945c2b599b08bf9ac97f

服务端已经启动,等待客户端连接......
已连接客户端:('192.168.43.23', 42677)
客户端:hello!
我:1111

服务端正常监听端口,成功接入队友客户端,接收并回复消息,通信链路正常。

客户端运行效果

7c72c96f9311ac9641be7ac01c809687

已连接服务端!输入exit退出聊天!
我:hello!
服务端:1111

客户端成功连接队友服务端地址,双向消息收发无误,无乱码、无断连。

本次实验联调阶段采用明文传输,保证双方调试顺畅;课后已系统学习加密通信方案,掌握明文加密、密文传输、接收解密、双向明文+密文输出的完整开发能力,满足课程加密要求。


四、LLM 生成创意单人 GUI 图形界面程序

4.1 程序说明

根据实验要求,使用 LLM 辅助编写纯本地单人创意GUI程序,全程不涉及网络、Socket 通信。
本次设计为古风随机诗词生成器,主题新颖、界面美化、操作简单,兼具创意性与实用性,基于 Python 内置 tkinter 开发,满足图形界面设计实验要求。

4.2 程序完整代码

# 创意单人GUI:古风诗词生成器(LLM生成)
import tkinter as tk
from tkinter import messagebox
import random# 古风诗词素材库
poem_list = ["晚风轻踏月,人间皆是温柔。","山河远阔,人间烟火。","且将新火试新茶,诗酒趁年华。","行至水穷处,坐看云起时。","星辰落山海,清风伴月明。","愿风吹散烦恼,万事皆有回甘。"
]# 主窗口基础设置
root = tk.Tk()
root.title("创意古风诗词小工具")
root.geometry("520x380")
root.resizable(False, False)
root.config(bg="#f5f0e6")# 标题标签
title = tk.Label(root, text="古风诗词生成器", font=("楷体", 20), bg="#f5f0e6", fg="#8b4513")
title.pack(pady=20)# 诗词展示文本框
show_area = tk.Text(root, width=45, height=6, font=("楷体", 13))
show_area.pack(pady=10)# 随机生成诗词
def get_poem():poem = random.choice(poem_list)show_area.delete(1.0, tk.END)show_area.insert(tk.END, poem)# 清空展示内容
def clear_text():show_area.delete(1.0, tk.END)# 程序说明弹窗
def about_info():messagebox.showinfo("程序说明", "本GUI由LLM生成\n单人本地运行 · 无网络通信\n趣味古风诗词创意小程序")# 按钮布局
frame = tk.Frame(root, bg="#f5f0e6")
frame.pack(pady=15)btn1 = tk.Button(frame, text="随机诗词", command=get_poem, width=10, bg="#d2b48c")
btn2 = tk.Button(frame, text="清空文本", command=clear_text, width=10, bg="#d2b48c")
btn3 = tk.Button(frame, text="关于", command=about_info, width=10, bg="#d2b48c")btn1.grid(row=0, column=0, padx=8)
btn2.grid(row=0, column=1, padx=8)
btn3.grid(row=0, column=2, padx=8)# GUI主循环
root.mainloop()

4.3 关键代码功能分析

  1. tkinter 基础控件
    利用Label设置美化标题,Text多行文本框用于诗词内容展示,搭建完整图形窗口结构。
  2. 随机创意功能
    引入random模块,随机抽取预设古风诗句,实现创意内容自动生成。
  3. 按钮事件绑定
    通过Button控件绑定自定义函数,实现随机生成、内容清空、弹窗提示三大交互功能。
  4. 界面美化设计
    采用古风色系背景、楷体字体、复古按钮配色,区别于基础简易GUI,提升创意观感。
  5. 弹窗交互提示
    借助messagebox弹出信息窗口,补充程序介绍,完善整体交互逻辑。

4.4 程序优点

  1. 创意特色鲜明
    摒弃常规计算器、输入工具,采用古风诗词主题,设计新颖独特。
  2. 纯本地独立运行
    无网络请求、无套接字通信,完全单人本地使用,符合修改要求。
  3. 结构简单易运行
    代码简洁、注释清晰,Python原生库运行,Windows、Linux、华为ECS均可正常启动。
  4. 界面整洁美观
    定制配色与字体,布局合理,视觉效果舒适,适合实验截图展示。
  5. LLM 辅助开发
    代码由大模型辅助生成,学习GUI控件使用与界面布局思路,完成实验要求。

4.5 运行过程与结果

bf5dbcb242d6b20bb44f8bf2756191fd

  1. 运行代码后,自动弹出古风风格图形窗口,界面布局规整;
  2. 点击随机诗词按钮,展示区自动刷新并显示一句唯美古风短句;
  3. 点击清空文本按钮,可一键清除展示区域所有内容;
  4. 点击关于按钮,弹出提示弹窗,查看程序功能与开发说明;
  5. 程序运行稳定、操作简单,无报错卡顿,可直接截图放入实验报告。

4.6 代码托管

本创意GUI程序源码,与本次Socket套接字通信所有代码统一整理,一并上传至码云仓库完成托管备份,满足实验代码提交要求。


五、实验结果

  1. 成功编写 TCP 服务端与客户端,单人分别完成服务端、客户端两种角色测试。
  2. 与队友在同一局域网内顺利双向通信,数据收发正常、连接稳定。
  3. 借助 LLM 完成创意可视化 GUI 程序开发,熟练分析代码结构与运行逻辑。
  4. 虽本次联调使用明文通信,但已完全掌握加密通信原理与加解密编码实现,符合课程考核要求。
  5. 全部代码完成码云托管,满足实验提交规范。

六、实验总结

本次实验完整完成 Socket TCP 网络通信全部要求,理解了面向连接传输的工作流程。
通过控制台原生代码与 LLM 生成的创意GUI程序对比开发,提升了网络编程与可视化开发能力。
实验中为方便双人调试采用明文传输,课后自主学习对称加密通信技术,掌握密文传输、数据解密、明文密文同步输出的实现方式,弥补了本次联调未加密的问题,充分掌握密码通信相关知识。
同时熟悉了云服务器与本地物理机的多环境运行方式,为后续网络编程学习奠定基础。


七、队友通信记录

  • 本人:秦一萱(20253231)
  • 队友:夏韵诗(20232223)
  • 通信方式:TCP Socket
  • 实验结果:双向连接成功,消息收发正常
http://www.jsqmd.com/news/715594/

相关文章:

  • 告别闪屏和乱码:手把手教你用OhMyPosh和Meslo字体美化Windows Terminal里的Git Bash
  • Dism++完全指南:Windows系统维护与优化的终极解决方案
  • 2026年智能码垛车机器人定制,哪家品牌更值得信赖? - GrowthUME
  • 深度学习电力变压器故障诊断【附代码】
  • 除了Hydra和Nmap,还有哪些工具能爆破MySQL?一份给安全新手的横向对比与实战选择指南
  • iOS 14+ 画中画实战:手把手教你打造悬浮提词器(附Demo源码与审核避坑指南)
  • 如何快速使用LibreHardwareMonitor:面向初学者的完整硬件监控指南
  • CL4054H 500mA线性锂离子电池充电器
  • 从零到上线:用Visual Studio 2022和IIS Manager完整部署.NET 8.0 MVC应用
  • ActivinE-重组人激活素常见问答FAQ:代谢研究如何检测蛋白活性?
  • Unity动态改分辨率踩坑记:为什么Screen.SetResolution用第二次就失灵了?
  • 美森铝业(成都)有限公司企业实力与发展白皮书 - GrowthUME
  • DataRoom大屏设计器:从零开始打造专业级数据可视化大屏
  • Labview通讯三菱Q PLC,Labvew TCP通讯三菱PLC ,MCTCP,三菱PLC...
  • 2026年浙江智能搬运机器人:厂家直供,联系方式大公开 - GrowthUME
  • 前端架构演进历程
  • OpenAI 手机曝光:联合联发科/高通,预计 28 年量产;StepAudio 2.5 ASR:500TPS 推理,5 分钟音频 2 秒转录丨日报
  • 从《原神》到你的项目:拆解Unity RPG对话系统与任务链设计(含MDA框架应用)
  • 英雄联盟智能助手League Akari终极指南:一键提升游戏体验的完整方案
  • Blazor完整指南:3个核心模块带你掌握.NET WebAssembly开发
  • 医疗多模态生成技术:MeDiM模型解析与应用
  • 开关电源纹波的成因、危害与核心抑制思路
  • 5分钟掌握百度网盘命令行:服务器文件管理终极指南
  • 课堂随笔7
  • ImageJ细胞计数翻车实录:我的散点荧光数据是怎么被“优化”没的?
  • AI原生开发环境编排:oh-my-openagent如何解决传统AI编码工具的三大痛点
  • Three.js字体加载踩坑全记录:从TTF转换到跨域问题的完整解决流程
  • 相对路径一般不写/
  • 2026绍兴豆包GEO优化服务商TOP5榜单及企业选商指南 - 花开富贵112
  • 跨平台Android投屏性能调优实战:QtScrcpy异步渲染架构与帧率优化技术指南