python文件操作实验报告_20193120 实验三《Python程序设计》实验报告

该实验报告详细描述了使用Python实现Socket(TCP/UDP)进行客户端和服务端通信的过程,涉及文件操作、加密传输和解密保存。实验中,客户端对文件内容加密后发送,服务端接收并解密保存到新文件。遇到的问题包括加密方案、文件处理、传输解码等,都通过相应策略解决了。实验结果表明,加密内容成功传输并解密,但当前加密方式安全性较低,仅适用于简单场景。
摘要由CSDN通过智能技术生成

实验三

(一)实验内容

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

(二)实验要求

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

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

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

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

(三)实验报告

课程:《Python程序设计》

班级: 1931

姓名: NO WAY

学号:20193120

实验教师:NO WAY

实验日期:2020年5月16日

必修/选修: 公选课

1.实验内容

client端:先对消息进行加密,再发送加密后消息。

sever端:接收client发来的消息,然后解密,将解密后的内容放到文件中。

2. 实验过程及结果

client端:

1:与server端进行连接,并处理需要传送的内容。

2:用户将需要传送的内容写到指定文件中,然后保存,运行代码即可进行传输。

3:在client端进行加密,将加密后的内容整合成一个字符串,编码后统一传输过去。

server端:

1:与client端进行连接,传输内容。

2:编写代码进行解码。其中专门设置一个函数“decode”进行解码,返回值为解密好的内容。

3:打开一个新的文件,将解密好的内容写到文件中。

(之后一定要记得写file.close()!!!)

运行:

先运行server端,再运行client端。结果如下:

字符通过加密的形式成功传输,并被server端进行解密,解密之后内容被放到了新的文件当中。

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

问题1:加密方案

问题1解决方案:

为防止加密后的字符超过ASCII码的范围,所以对ASCII码值小于125的字符进行加密。

另外,对原来的'\n'进行加密的时候,会出现系统无法识别(正方形中有一个问号)的情况,所以不对转行字符进行加密。

问题2:无法处理读取后的文件

问题2解决方案:因为读取完文件之后,没有写file.close(),所以无法删除

只需要在读取完成之后,加上file.close()即可

问题3:传输和解码问题

问题3解决方案:

对于传输问题,先把加密后的每一个字符用空格隔开,然后编码成二进制之后,用sendall全部送过去。

解码问题,server端收到之后,先进行decode获得密文,再用split函数,以空格为间隔,将发过来的每个字符单独拆分成一个列表元素,然后server端的密钥进行一一解码。

问题4:附加bug

原因:在用ASCII码关系解密的时候,遇到了空字符串,无法解密,系统报错。

解决办法:因为列表的最后元素是空字符串,所以会报错。只需这样修改即可修复bug:

for i in range(len(unknown)-1):

或者在解密部分这样修改:

elif ord(unknown[i]) <= 125 and unknown[i] != '':

修改后,程序正常运行。

其他(感悟、思考等)

1:上述加密办法属于简单的加密办法,类似于凯撒密码,很容易被破解,需要用高级加密算法才能避免其被轻松破解。

2:目前只能对ASCII字符进行加密,遇到其他不属于ASCII码范围的字符,例如中文字符,则无能为力。

3:QQ能做到上传各种文件到群文件或者传输给其他人。如果可能的话,还可以增加传输其他类型文件的功能,这个代码目前只支持传输txt文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值