20234214 实验三 《Python程序设计》实验报告
20234214 2024-2025-2 《Python程序设计》实验三报告
课程:《Python程序设计》
班级: 2342
姓名: 唐果儿
学号:20234214
实验教师:王志强
实验日期:2025年4月15日
必修/选修: 专选课
一、实验内容
(一)实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
(二)实验要求
1.创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
2.要求包含文件的基本操作,例如打开和读写操作。
3.要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
4.程序代码托管到码云。
二、实验过程及结果
1.以服务端为例进行每一步代码的分析:
(1)导入socket模块,用以实现通信功能

(2)用def关键字定义函数,用for循环遍历每个字符,将每个字符的ASCII码+1加密,最后返回加密后的新字符串

解密同理~

(3)创建 socket 对象,socket.AF_INET和socket.SOCK_STREAM指的是socket对象分别基于IPv4和TCP协议

(4)先分别定义服务器的 IP 地址和端口号,并将它们组合成一个元组
运用套接字语法bind将地址服务器和地址绑定,使客户端可以找到并连接
server.listen(2)表示服务器开始监听对话,2表示最多允许 2 个客户端连接请求在队列中等待处理
以上进程成功后打印“服务端已启动,等待客户端连接”

(5)接受客户端的连接,当与客户端连接成功时则会返回一个包含客户端地址的元组

(6)服务器最多从客户端接收1024字节的数据,当检测到客户端发出空字符时则结束对话进程

(7)如果客户端发来文件,提示用户输入文件的保存路径(路径后+文件名+.txt 最初不知道如何输入保存路径)。如果文件保存过程中没有出现异常,打印保存成功的提示信息,如果在文件保存过程中出现异常,打印保存失败的提示信息

(8)选择发送信息类型,当用户输入内容不为1-3内容时提示输入错误,重新输入。输入1发送文件,2发送信息,3退出进程(这样可以节省每次对话后选择是否继续进行对话的步骤)

(9)将代码托管到码云
①客户端
https://gitee.com/tangguoer1129/codes/a2pmjxld8g9nvuihb4eo741

②服务器
https://gitee.com/tangguoer1129/codes/71bmrl0tyg9udzs4hocvk12

2.实验成果展示
与其他同学(20234220马燕秋)进行通信并发送文件成功。
(1)第一次实验中,马燕秋是服务器,我是客户端,以下为通信记录截图:
实现了在本机创建文档并发送路径后,客户端可以保存后阅读文档。
本机通信与发送文件成功图片:

客户端阅读文档图片:

本机创建文档图片:

(2)第二次实验中,我是服务器,马燕秋是客户端,以下为通信记录截图:

客户端阅读文档图片:

本机创建文档图片:

3.服务器与客户端代码
(1)服务器代码:



(2)客户端代码:



三、实验过程中遇到的问题和解决过程
- 问题1:在进行发送消息类型选择时,如选择无效信息,进行提示后无法再次输入,出现输入后无响应或进程退出,显示“远程主机强迫关闭了一个现有的连接”的现象(以下为实验中出现的两种情况)
![]()
![]()
- 问题1解决方案:根据先前几个实验积累的经验得知,在输入错误后直接关闭进程是由于没有在选择消息类型这段代码中加入while循环语句的原因,故尝试加入,加入while循环后实现多次输入错误后进程仍继续。
![]()
- 问题2:多次保存文件失败
- 问题2解决方案:上网搜索发现是保存文件路径不正确,且路径后没有加文件名,搜索查看文件路径的方法:属性→位置→+文件名.txt即可
其他(感悟、思考等)
这次实验感觉比之前几次实验难度大一些,虽然老师上课讲解了相关步骤,但面对代码还是有些不知所措。但在配合同学进行实验对话的过程中我对于本次实验开始有了实感。在着手进行实验的过程中,我对于上一学期在计算机网络课中学习的ip和端口、大一上学期计算机基础课中学习的ASCII码在实操中加深了认识,同时,我在运用一些语法对代码进行修改时更加熟练,在遇到报错情况时能够更快理解错误之处并修改……虽然我自认为在这几周的学习中没能熟练掌握python的各种知识,对这门学科的了解依然浅薄,但在一次一次的实践与实验中,我却惊喜的发现一些细微的变化,也在一次次的实验成功中体验到了前所未有的成就感,这些感受最终都成为我继续学习与探究这门学科奥秘的动力,激励我继续思考、尝试、体验成功与失败。
参考资料
https://blog.csdn.net/DefaultTest/article/details/80758720
https://blog.csdn.net/qq_42143701/article/details/124827926
https://blog.csdn.net/LNN0212/article/details/140634093




浙公网安备 33010602011771号