20192316 2020-2021-2 《Python程序设计》实验三报告

20192316 2020-2021-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 1923
姓名: 贝世之
学号:20192316
实验教师:王志强
实验日期:2021年5月24日
必修/选修: 公选课

1.实验内容

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

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

(2)要求包含文件的基本操作,例如打开和读写操作。

(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

(4)程序代码托管到码云。

2. 实验过程及结果

2.1 创建服务器

先初始化服务器,再令服务器连接本地IP地址+端口,设置服务器可以监听多个客户请求(此处设为3),当然客户端得排队。

为了让服务器能一直工作,我令服务器循环工作,同时将接收到的密文通过base64.b64decode解密后保存至“server.txt”文件。

2.2 创建多个客户端

先读取文件信息,再通过base64.b64encode()对文件进行加密。

题目要求服务端在特定端口监听多个客户请求,因此此处设置两个客户端,尝试同时对服务器进行通信请求。

2.3 进行通信

通信过程如下图,服务端能同时监听多个客户请求,同时客户端满足打开文件加密传输的要求,服务器满足解密并写文件的要求,同时给以客户端回复。

客户端1向服务器发送加密文件

服务器接收客户端1的加密文件并解密保存

客户端2向服务器发送加密文件

服务器接收客户端2的加密文件并解密保存

2.4 托管到码云

传送门

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

  • 问题1:服务器进入持续循环,如果通过输入关闭服务器又不合逻辑
  • 问题1解决方案:服务器就应该一直工作=_=,7*24小时工作,因此不考虑退出服务器(可以手动关闭)。
  • 问题2:读写文件报错argument must be str, not bytes
  • 问题2解决方案:加入.encode("utf-8")和.decode("utf-8"),将字符串转为字节。

其他(感悟、思考等)

这可比java编程实现客户端和服务器简单多了o(╥﹏╥)o,Python大法好,传送门-java远程计算器

参考资料

posted on 2021-05-24 20:57  王老师铁杆粉  阅读(137)  评论(0编辑  收藏  举报

导航