20234120 2024-2025-2 《Python程序设计》实验三报告

20234120 2024-2025-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 2341班
姓名: 李卓颖
学号:20234120
实验教师:王志强
实验日期:2025年4月15日
必修/选修: 专业选修课

一、实验内容

  • 1.创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
  • 2.实验要求
    (1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
    (2)要求包含文件的基本操作,例如打开和读写操作。
    (3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
    (4)程序代码托管到码云。

二、实验过程及结果

(一)编写程序

  • 1.服务器端构建
    (1)导入 socket 模块并创建套接字。

    (2)通过命令提示符查看接收方本机IP地址,即无线局域网适配器WLAN的IPv4地址(在教室为:172.16.178.142,在宿舍为:192.168.124.13),并设置端口号(此处设置为8888)。


    (3)设置监听次数为 1,并提示“服务器正在监听”。

    (4)使用“ accept()”方法接受客户端的连接请求,并提示“接受来自 {客户端地址} 的链接”。

    (5)构建“While”循环体系,使服务器能够不断接收客户端发送的信息进行回应,接收到消息时提示“客户端说:”,随后输入信息发送给客户端。

    (6)为方便进行错误处理,添加异常捕获以获取更多信息。(详情在实验中遇到的问题部分体现)

    (7)在客户端信息传输完毕后,关闭套接字,结束连接。

    (8)完整服务器端代码如下图所示:

  • 2.客户端构建
    (1)进行一些自定义设置,简单阐述文件名、描述、日期、作者以及座右铭。

    (2)导入 socket 模块并创建套接字。

    (3)通过命令提示符查看接收方本机IP地址和端口号(此处操作与第1点第(1)、(2)点操作相同),以便和服务器连接。

    (4)构建“While”循环体系,使客户端能够不断向服务器发送消息,并接收服务器的回复。

    (5)接收到服务器消息时提示“服务器说:”,并跳出提示“是否继续 Y/N?”,若选择“Y”,则继续循环;若选择“N”,则退出循环。

    (6)在所有信息传输完毕后,关闭套接字,结束连接。

    (7)完整客户端代码如下图所示:

(二)测试与运行程序

此处与同学(20234105史宇凡)进行连接,保持两台主机在同一网络中。

  • 1.服务器端运行结果
  • 2.客户端运行结果

    运行正常,成功地连接了两台主机并实现了通信。

(三)将代码托管到云

  • 1.登录见实验二报告,此处不多赘述。
  • 2.将代码上传到自己的库。

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

  • 问题1:在初次编辑好代码尝试建立连接时,出现了如下图所示的报错:

    问题1解决方案:在翻书及DeepSeek搜索查询后,提示可以通过添加异常捕获以获取更多的信息,并给出以下代码,应用到代码中果然不再报错。

  • 问题2:一开始由于没有弄懂服务器端和客户端所输入的IP地址都需要为接收方的地址,导致一直连接失败
  • 问题2解决方案:通过和另一位同学的不断尝试和网上搜索查错,发现是没有进行IP地址的统一,结合问题1的解决,成功地运行了代码,连接了两个设备并成功进行了对话。

其他(感悟、思考等)

通过本次实验,我在构建基于 socket 模块的服务器与客户端通信系统时,起初我对该模块的使用感到困惑,但在老师的指导以及同学的帮助下,逐步掌握了相关知识,并成功实现了两台设备之间的简单对话。这不仅加深了我对网络编程的理解,也让我认识到和别人合作的重要性。
本次对 socket 模块的实验对我来说是一次全新的体验,它展示了如何仅用几行代码就能实现不同设备间的相互通信,进一步彰显了 Python 在实际应用中的魅力。这种体验更加激发了我对网络编程的兴趣,使我更加期待未来能够深入学习这一领域的知识。总之,这次实验不仅提高了我的编程技能,也让我学会了如何在实践中不断成长和发展。

posted @ 2025-04-22 20:33  drowing  阅读(37)  评论(0)    收藏  举报