20192223张鹏宇 2019-2020-2 《Python程序设计》实验三报告

20192223张鹏宇 2019-2020-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 1922
姓名: 张鹏宇
学号:20192223
实验教师:王志强
实验日期:2020年5月23日
必修/选修: 公选课

1.实验内容

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

要求:

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

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

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

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

2. 实验过程及结果

将socket和文件读写相结合,构建服务器和客户端进行通信

server端


client端


文件读写

gitee:
https://gitee.com/python_programming/zpy192223/blob/master/exp-server.py
https://gitee.com/python_programming/zpy192223/blob/master/exp-client.py

  • tcp通信是流式传输,没有“包”的概念,所以没有“粘包”问题。(详见知乎:https://www.zhihu.com/question/20210025
  • 传输时先将str字符串encode编码成bytes字节(utf-8),后再decode解码为str
  • 最初尝试实用rsa加密算法,调用rsa库函数在客户端成功加密以及发送密文和密钥,但在服务器端无法进行解码,水平不足无法将传输来的密文密钥按照格式输入进函数,密钥是n,e,d,p,q的class。
  • 在解决问题的时候,了解到了rsa算法的原理,以及国密算法,尽管没有把rsa算法用上但也算是有收获。
  • 因为是中文,没有使用凯撒加密,选择了base64,应该也算加密吧,在文件读写上加上了时间。

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

小结

看似逻辑上简单的问题,实践起来需要很强的代码功底才能高效解决,道阻且长。

猜你喜欢

转载自www.cnblogs.com/ponny/p/12944845.html
今日推荐