20254107实验三《Pyrhon与程序设计》实验报告

20254107 2025-2026-2 《Python程序设计》实验3报告

课程:《Python程序设计》

班级: 2541

姓名: 刘政

学号:20254107

实验教师:王志强

实验日期:2026年4月28日

必修/选修: 专选课

  1. 实验内容

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

2. 实验过程及结果

要求一:

(本人学号为20254107;搭档学号为20254123)

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

(2)要求发送方输入内容,并传输;接收方收到信息并显示。

①首先更改ip地址,将最后一部分改为学号,由于不能以零为开头,07实际显示为7。

屏幕截图 2026-04-29 162740

②20254107作为客户端,将host地址改为对方的ip地址,以下是双方对话截图屏幕截图 2026-04-28 205200

3782740-20260428205305589-744720659

③我作为服务端,对方将host地址改为我的ip地址,双方对话截图如下屏幕截图 2026-04-29 222445

57af77f9ecb6a46ab2b29c5e40c9bec3

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

屏幕截图 2026-04-29 230632代码和运行截图如下

屏幕截图 2026-04-29 230645

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

①角色选择与IP输入

cfce0a4540a723e958c18488fe62e368

说明:将原来代码里固定的 IP 地址改为图形界面的输入框,用户可直接填写对方 IP,无需修改源码。

②服务端启动与接受连接

025c8a56a0c2dd3ab68e5babe283e2f2

说明:服务端绑定地址并监听,防止界面无响应。

③ 客户端连接

029540d47739f3e71840d8836855d12e

说明:客户端根据输入的 IP 发起连接,成功后显示服务端地址,并启动接收线程。

④后台接收消息

8b497194864e15bf7feb91637cb2dd15

说明:在独立线程中循环接收消息,实时显示到聊天区。采用 UTF-8 编码,收到空数据或 exit 时退出。

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

①无需同时运行两个程序,一个程序即可体验两种角色,管理更方便。

②通过窗口和按钮即可完成连接、发送与查看聊天记录

③IP和端口可在输入框随时修改,不必修改代码,更加灵活。

④收发消息独立线程运行,不再一问一答严格交替,双方可同时发送信息,交流更自然流畅。

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

问题1:我和搭档的代码无法正常连接进而形成对话

问题1解决方案:打开命令提示符,输入ipconfig对双方ip地址进行检查并修改;排查并关闭防火墙。

问题2: accept() 后进入单次聊天循环,客户端退出后程序就结束了,无法再接下一个客户端。

问题2解决方案:退出Pycharm,重新运行程序

问题3:将 IP 写在代码里,换一台电脑或切换网络时,必须打开源码修改 HOST 再重新运行,不方便。

问题3解决方案::在生成程序中改为界面输入框填写 IP,不改代码也能灵活切换。

感悟与思考:这次实验让我对 Socket 通信从概念走向了实际运用。通过从命令行版本改进为图形界面程序的过程,直观理解了 TCP 连接建立、IP 与端口绑定的具体过程。对比两版代码,我意识到程序不仅要功能正确,还需考虑操作的便捷性与交互的流畅性,我深刻认识到了Python的多功能性与实用性。此外,排查防火墙、IP配置等问题的过程,也加深了我对网络环境的认识。

## 参考资料

- [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)

- [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html)

- ...

posted @ 2026-04-30 00:04  20254107刘政  阅读(8)  评论(0)    收藏  举报