20193120 实验三《Python程序设计》实验报告
2021-01-20 23:15
标签:方案 遇到 接收 感悟 码云 ascii码 client 凯撒 系统 实验三 (一)实验内容 创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。 (二)实验要求 (1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序; (2)要求包含文件的基本操作,例如打开和读写操作。 (3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。 (4)程序代码托管到码云。 (三)实验报告 课程:《Python程序设计》 client端:先对消息进行加密,再发送加密后消息。 client端: 2:用户将需要传送的内容写到指定文件中,然后保存,运行代码即可进行传输。 3:在client端进行加密,将加密后的内容整合成一个字符串,编码后统一传输过去。 server端: 运行: 问题1:加密方案 问题1解决方案: 问题2:无法处理读取后的文件 问题2解决方案:因为读取完文件之后,没有写file.close(),所以无法删除 问题3:传输和解码问题 问题4:附加bug sever端和client端的码云:https://gitee.com/i_am_yu/exp3 1:上述加密办法属于简单的加密办法,类似于凯撒密码,很容易被破解,需要用高级加密算法才能避免其被轻松破解。 20193120 实验三《Python程序设计》实验报告 标签:方案 遇到 接收 感悟 码云 ascii码 client 凯撒 系统 原文地址:https://www.cnblogs.com/I-am-yu/p/12899725.html
班级: 1931
姓名: NO WAY
学号:20193120
实验教师:NO WAY
实验日期:2020年5月16日
必修/选修: 公选课1.实验内容
sever端:接收client发来的消息,然后解密,将解密后的内容放到文件中。2. 实验过程及结果
1:与server端进行连接,并处理需要传送的内容。
1:与client端进行连接,传输内容。
2:编写代码进行解码。其中专门设置一个函数“decode”进行解码,返回值为解密好的内容。
3:打开一个新的文件,将解密好的内容写到文件中。
(之后一定要记得写file.close()!!!)
先运行server端,再运行client端。结果如下:
字符通过加密的形式成功传输,并被server端进行解密,解密之后内容被放到了新的文件当中。3. 实验过程中遇到的问题和解决过程
为防止加密后的字符超过ASCII码的范围,所以对ASCII码值小于125的字符进行加密。
另外,对原来的‘\n‘进行加密的时候,会出现系统无法识别(正方形中有一个问号)的情况,所以不对转行字符进行加密。
只需要在读取完成之后,加上file.close()即可
问题3解决方案:
对于传输问题,先把加密后的每一个字符用空格隔开,然后编码成二进制之后,用sendall全部送过去。
解码问题,server端收到之后,先进行decode获得密文,再用split函数,以空格为间隔,将发过来的每个字符单独拆分成一个列表元素,然后server端的密钥进行一一解码。
原因:在用ASCII码关系解密的时候,遇到了空字符串,无法解密,系统报错。
解决办法:因为列表的最后元素是空字符串,所以会报错。只需这样修改即可修复bug:
for i in range(len(unknown)-1):
或者在解密部分这样修改:
elif ord(unknown[i])
修改后,程序正常运行。其他(感悟、思考等)
2:目前只能对ASCII字符进行加密,遇到其他不属于ASCII码范围的字符,例如中文字符,则无能为力。
3:QQ能做到上传各种文件到群文件或者传输给其他人。如果可能的话,还可以增加传输其他类型文件的功能,这个代码目前只支持传输txt文件。
文章标题:20193120 实验三《Python程序设计》实验报告
文章链接:http://soscw.com/index.php/essay/44752.html