课程:《Python程序设计》
班级: 2541
姓名: 何若水
学号:20254121
实验教师:王志强
实验日期:2026年4月28日
必修/选修: 专选课
## 1.实验内容 :
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。## 2. 实验过程及结果:
在两次实验中,均与20254105张家毓组成两人组,完成各次实验。
实验一:
在老师带领下,完成服务端和客户端代码的编写,输入PyCharm。
(一)本次,由我担任服务端。
1.打开我手机的热点,并在电脑中输入“cmd”,寻找命令提示符,输入“ipconfig”,找到我的热点的相关信息;

2.在“设置”中找到“网络和Internet”,进入“更改配适器选项”,在“WLAN属性”中选择“使用下面的IP地址”,依次填写“IP地址”、“子网掩码”与“默认网关”,完成IPV4设置;

3.在“设置”中找到“防火墙”,关闭公用网络防火墙;
4.告知同伴我的热点、IPV4地址等信息,等待其连接调试;
5.进入服务端模块,找到“HOST”、“PORT”,输入地址“10.248.12.21”,等待客户端连接;
6.连接成功,运行通话结果如下图所示:

(二),本次,由我担任客户端
1.退出我的热点,进入“更改配适器选项”,修改为同伴的“WLAN属性”,依次填写“IP地址”、“子网掩码”与“默认网关”,完成同伴的IPV4设置;

2.连接同伴的热点;
3.进入客户端模块,找到“HOST”、“PORT”,输入地址“196.168.43.5”,与服务端连接;
4.连接成功,运行通话结果如下图所示:

实验二
使用LLM豆包生成服务端和客户端代码,输入PyCharm。
(一)豆包实验
1.本次,由我担任服务端,其余操作与“实验一·(一)”步骤相同,调试后连接成功,运行通话结果如下图所示:

2.本次,由我担任客户端,其余操作与“实验一·(二)”步骤相同,调试后连接成功,运行通话结果如下图所示:

(二)DeepSeek实验
经过老师提醒,发现先前大模型豆包生成的代码缺少UGI图标。遂使用大模型DeepSeek,生成服务端和客户端代码,输入PyCharm。
1.本次,由我担任客户端,其余操作与“实验一·(二)”步骤相同,调试后连接成功,运行通话结果如下图所示:

2.本次,由我担任服务端,其余操作与“实验一·(一)”步骤相同,调试后连接成功,运行通话结果如下图所示:

3.对于关键代码的功能和使用方法的分析:
①HOST:
HOST是服务器的地址,告诉客户端要去哪里找到服务器。不同的HOST值对应了不同地址,比如本机地址、互联网地址等。用户通过输入服务端的 IP 地址,可以帮助客户端连接到服务端程序的电脑,从而建立通话联系。
②PORT:
PORT就是端口号,一个电脑可以运行多个网络程序,而双方用户通过输入相同的端口号,就可以帮助服务端和客户端建立通话连接,找到正确的程序。
③代码:
# 发送消息
def send_message(self):
message = self.message_entry.
get('1.0', tk.END).strip()
self.client_socket.
send(message.encode('utf-8'))
# 编码并发送
# 接收消息(在独立线程中运行)
def receive_messages(self):
while self.is_in_call:
message = self.client_
socket.recv(1024).
decode('utf-8') # 接收并解码
self.add_log(message,
"received") # 显示在界面上
这一段代码实现了双向通信机制,使得服务端和客户端发送的消息可以被对方受到,并且显示出来。
同时,通过设置1024字节的缓冲区来保障文本消息足够服务端和客户端的用户使用,双方可以畅所欲言。
4.分析LLM生成代码的优点:
①通过生成UGI图标,出现对话框与对话框,并显示通话时间与通话记录,实时显示双方连接状态,可以提升用户的使用体验,模拟真实的通话环境;
②通过生成醒目的“按钮”,直接帮助用户启动服务器与断开连接,结束通话,可以大大减少用户需要开始对话的步骤,不必多次点击PyCharm的运行标志与结束标志,流程简洁,易于上手操作;
③加入了表情包与符号,使得通话界面更加友好,提高了通话过程的趣味性。
## 3. 实验过程中遇到的问题和解决过程
- 问题1:无法连接同伴的热点,或者虽然可以连接热点但是不久后会自动断开,网络极度不稳定;
- 问题1解决方案:通过询问老师,发现问题出现在了更改IPV4地址上。在此之前,我一直误认为两人的修改后地址需要一模一样。在老师的指导下,我把IPV4修改版本的学号部分调整成我自己的学号,解决了无法连接同伴热点的问题,网速流畅且网络稳定。
- 问题2:我的大模型豆包生成的socket代码在进入PyCharm后,虽然能够运行,但是无法与同伴端取得联系;
- 问题2解决方案:经过多次测试与排查后,与同伴确定,是大模型豆包生成的代码存在问题,而并非我们本身存在问题。后续是同伴用她的豆包重新生成了代码,这次的socket代码终于可以运行。
- 问题3:老师提醒我们AI大模型生成的代码还需要有UGI界面,但是在尝试使用大模型豆包,大模型元宝后,均存在语法等错误,无法在PyCharm上运行,一时想不到其他可以选择的主流大模型;
-问题3解决方案:在集思广益后,最终求助大模型DeepSeek,在几轮指令调试后,修复了消息无法发送的问题,并最终得到了精美的UGI显示界面,实验成功。
## 其他(感悟、思考等)
这大概是我做过的最艰难的实验,没有之一,因为步骤多,而且比较复杂。由于我之前对如何修改IPV4网址没有任何知识或者经验,所以在连接同伴热点的过程中遭遇诸多不顺,并且问题一半都出在这里。在前期调整修改的过程中因为还没有意识到是网址的问题,所以绕了很多弯路,也耗费了大量的情绪与时间。但是感谢我同伴的鼓励,也感谢老师耐心的讲解与付出,我们最终完成了运用Python程序创建客户端和服务端的实验。这次实验让我看见了两人通力合作可以相互扶持,集思广益,解决很多单靠一个人解决不了的问题的重要性,也感受到了老师详细指导引导我们克服困难的温暖。这次实验经历既是挑战,也是成长。
## 参考资料
- [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)
- [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html) - ...
