python⽂件操作实验报告_20193120实验三《Python程序设 计》实验报告
天才就是非凡的傻劲实验三
创建服务端和客户端,服务端在特定端⼝监听多个客户请求。客户端和服务端通过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端进⾏解密,解密之后内容被放到了新的⽂件当中。
二维傅里叶变换
问题1:加密⽅案
问题1解决⽅案:
为防⽌加密后的字符超过ASCII码的范围,所以对ASCII码值⼩于125的字符进⾏加密。
另外,对原来的'\n'进⾏加密的时候,会出现系统⽆法识别(正⽅形中有⼀个问号)的情况,所以不对转⾏字符进⾏加密。
问题2:⽆法处理读取后的⽂件
问题2解决⽅案:因为读取完⽂件之后,没有写file.close(),所以⽆法删除
只需要在读取完成之后,加上file.close()即可
问题3:传输和解码问题
问题3解决⽅案:
对于传输问题,先把加密后的每⼀个字符⽤空格隔开,然后编码成⼆进制之后,⽤sendall全部送过去。
解码问题,server端收到之后,先进⾏decode获得密⽂,再⽤split函数,以空格为间隔,将发过来的每个字符单独拆分成⼀个列表元素,然后server端的密钥进⾏⼀⼀解码。
问题4:附加bug
原因:在⽤ASCII码关系解密的时候,遇到了空字符串,⽆法解密,系统报错。
解决办法:因为列表的最后元素是空字符串,所以会报错。只需这样修改即可修复bug:
3g无线视频服务器for i in range(len(unknown)-1):
或者在解密部分这样修改:
elif ord(unknown[i]) <= 125 and unknown[i] != '':
修改后,程序正常运⾏。
其他(感悟、思考等)
1:上述加密办法属于简单的加密办法,类似于凯撒密码,很容易被破解,需要⽤⾼级加密算法才能避免其被轻松破解。
2:⽬前只能对ASCII字符进⾏加密,遇到其他不属于ASCII码范围的字符,例如中⽂字符,则⽆能为⼒。
3:QQ能做到上传各种⽂件到⽂件或者传输给其他⼈。如果可能的话,还可以增加传输其他类型⽂件的功能,这个代码⽬前只⽀持传输txt⽂件。