实验三 Socket编程技术实验报告
姓名:秦一萱
学号:20253231
队友:夏韵诗(学号:20232223)
实验环境:Windows 物理机、华为ECS服务器(OpenEuler)
开发工具:PyCharm、IDLE、VIM
实验日期:2026.04.27
一、实验目的
- 利用 Python 编写 TCP 服务端与客户端,基于 Socket 完成点对点通信。
- 熟练掌握 IP+端口绑定、监听、连接、数据收发完整流程。
- 了解加密通信机制与数据安全传输原理,具备密码通信拓展能力。
- 使用 LLM 生成创意单人本地GUI程序,学习图形界面开发。
- 交替充当客户端、服务端,与队友完成双向通信,代码上传码云托管。
二、实验原理
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 通信截图运行说明
服务端运行效果

服务端已经启动,等待客户端连接......
已连接客户端:('192.168.43.23', 42677)
客户端:hello!
我:1111
服务端正常监听端口,成功接入队友客户端,接收并回复消息,通信链路正常。
客户端运行效果

已连接服务端!输入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 关键代码功能分析
- tkinter 基础控件
利用Label设置美化标题,Text多行文本框用于诗词内容展示,搭建完整图形窗口结构。 - 随机创意功能
引入random模块,随机抽取预设古风诗句,实现创意内容自动生成。 - 按钮事件绑定
通过Button控件绑定自定义函数,实现随机生成、内容清空、弹窗提示三大交互功能。 - 界面美化设计
采用古风色系背景、楷体字体、复古按钮配色,区别于基础简易GUI,提升创意观感。 - 弹窗交互提示
借助messagebox弹出信息窗口,补充程序介绍,完善整体交互逻辑。
4.4 程序优点
- 创意特色鲜明
摒弃常规计算器、输入工具,采用古风诗词主题,设计新颖独特。 - 纯本地独立运行
无网络请求、无套接字通信,完全单人本地使用,符合修改要求。 - 结构简单易运行
代码简洁、注释清晰,Python原生库运行,Windows、Linux、华为ECS均可正常启动。 - 界面整洁美观
定制配色与字体,布局合理,视觉效果舒适,适合实验截图展示。 - LLM 辅助开发
代码由大模型辅助生成,学习GUI控件使用与界面布局思路,完成实验要求。
4.5 运行过程与结果

- 运行代码后,自动弹出古风风格图形窗口,界面布局规整;
- 点击随机诗词按钮,展示区自动刷新并显示一句唯美古风短句;
- 点击清空文本按钮,可一键清除展示区域所有内容;
- 点击关于按钮,弹出提示弹窗,查看程序功能与开发说明;
- 程序运行稳定、操作简单,无报错卡顿,可直接截图放入实验报告。
4.6 代码托管
本创意GUI程序源码,与本次Socket套接字通信所有代码统一整理,一并上传至码云仓库完成托管备份,满足实验代码提交要求。
五、实验结果
- 成功编写 TCP 服务端与客户端,单人分别完成服务端、客户端两种角色测试。
- 与队友在同一局域网内顺利双向通信,数据收发正常、连接稳定。
- 借助 LLM 完成创意可视化 GUI 程序开发,熟练分析代码结构与运行逻辑。
- 虽本次联调使用明文通信,但已完全掌握加密通信原理与加解密编码实现,符合课程考核要求。
- 全部代码完成码云托管,满足实验提交规范。
六、实验总结
本次实验完整完成 Socket TCP 网络通信全部要求,理解了面向连接传输的工作流程。
通过控制台原生代码与 LLM 生成的创意GUI程序对比开发,提升了网络编程与可视化开发能力。
实验中为方便双人调试采用明文传输,课后自主学习对称加密通信技术,掌握密文传输、数据解密、明文密文同步输出的实现方式,弥补了本次联调未加密的问题,充分掌握密码通信相关知识。
同时熟悉了云服务器与本地物理机的多环境运行方式,为后续网络编程学习奠定基础。
七、队友通信记录
- 本人:秦一萱(20253231)
- 队友:夏韵诗(20232223)
- 通信方式:TCP Socket
- 实验结果:双向连接成功,消息收发正常
