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端进行解密,解密之后内容被放到了新的文件当中。

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文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

究极日月服务器维护时间,超激斗梦境9月25日终极测试服务器维护公告_超激斗梦境9月25日更新了什么_玩游戏网...

2021LPL夏季赛FPX vs V5第三场比赛视频2021LPL夏季赛8月4日FPXvsV5视频在哪看&#xff0c;比赛中FPXvsV5比赛中MVP又是谁&#xff0c;2021LPL夏季赛8月4日的比赛中FPXvsV5谁会获胜呢下面一起和小编来看看吧。【2021LPL夏季赛赛程】【2021LPL夏季赛直播】比赛时间&#xff1a;8月…

页面中用到iframe不能完全显示的解决方案

页面中用到iframe不能完全显示的解决方案 如果在页面中用到了iframe标签&#xff0c;有时在浏览器中并不能完全显示iframe&#xff0c;导致有些iframe内的内容不能被显示&#xff0c;如果遇到这种情况&#xff0c;使用以下js可以解决大多数问题。 这是iframe标签&#xff1a; &…

关灯看视频(Turn Off the Lights)

插件介绍随着使用互联网的人越来越多在网络上看视频已是常事一些相关的软件就运应而生今天为大家推荐一个能够提高用户们看视频体验的插件。关灯看视频Turn Off the Lights观看视频时自动调暗页面让您仿佛置身于电影院中只要轻轻按下灯的开关页面就会暗淡下去。 然后您就可以专…

seo 伪原创_如何判断外包的seo文章是否是抄袭或伪原创?

做为资深的外贸seo运营人员&#xff0c;应该会有将内容外包的情况。有时候就会遇到外包的人有抄袭、复制、伪原创的情况发生。那如何避免这种情况的出现呢&#xff1f;相信很多人都遇到过这种情况&#xff0c;是比较头疼的。那就需要检查。抄袭、伪原创这种是必须检查的&#x…

ps cs3中显示任何像素不大于50%选择。选区边将不可见是什么意思

你选取的羽化值大于像素值&#xff0c;虽然选去边不可见&#xff0c;但是选区是仍然存在的 转载于:https://www.cnblogs.com/net2/archive/2010/10/30/1864930.html

服务器主板装w7系统死机,解决win7安装过程死机现象有一招

随着windows7越来越多的功能被开发,很多xp用户改为使用windows7系统,但是在安装windows7系统时经常会出现死机这一想象,该如何解决呢?问题描述应用某些主板的计算机安装Windows 7&#xff0c;在复制安装文件后进入“正在启动Windows”(Starting Windows)界面时死机&#xff0c…

Interview and paper based test

笔试面试总结 榜样&#xff1a; http://www.cnblogs.com/figure9/archive/2013/01/09/2853649.html ArrayList和Vector的区别&#xff1f; http://blog.csdn.net/luxiaoxun/article/details/7980618 1. 输出集合的排列、组合 http://blog.csdn.net/u010570643/article/details/…

python get rect 函数_python笔记之函数

函数>>> def funTest(param1):... this is function document string. #正文需要有缩进... return param1...>>> funTest(12)12>>> funTest.__doc__ #访问文档字符串this is function document string.函数实参&#xff0c;相当于一个赋值操作&…

F5 IIS Log获取客户端源IP

1.配置F5启用X-Forwarded-For方法&#xff1a; 1:Local Traffic&#xff0d;Profiles&#xff0d;Http&#xff0d;改"Insert XForwarded For"为Enable 2:Local Traffic&#xff0d;Virtual servers&#xff0d;点击需要改动的VS&#xff0d;将Type选项更改为Standa…

华为发布最强服务器芯片,[百家号]华为:最强ARM服务器芯片,华为鲲鹏920处理器发布...

CSS3中&colon;nth-child和&colon;nth-of-type的区别深入理解关于:nth-child和:nth-of-type的区别之前一直没太注意.最近打算深入了解一些CSS3,才发现里面其实暗藏玄机. :nth-child可以选择父元素下的字元素,:nth-of-type ...纯CSS3制作皮卡丘动画壁纸前言 明天就放假了…

ios动画效果集锦(持续更新)

1.树叶滚动进度&#xff1a;http://www.jianshu.com/p/800496caa055 2.列表滚动动画和滚动视差效果http://www.jianshu.com/p/42e1eb59a1af 3.文字颜色变换http://www.jianshu.com/p/6c8f645cb604转载于:https://www.cnblogs.com/hxwj/p/5283453.html

PYTHON__关于Socket中的Select使用理解

关于Socket中的Select使用理解 以下是代码和中文注释的个人理解 import socket, select, Queueserver(192.168.2.100,10086)#创建TCP/TP Socket sock_sersocket.socket(socket.AF_INET,socket.SOCK_STREAM) #设置不阻塞监听 sock_ser.setblocking(False) sock_ser.setsockopt(s…

悲观锁和乐观锁_悲观锁和乐观锁处理并发操作

本人在金融公司任职,今天来分享下关于转账的一些并发处理问题,这节内容,我们不聊实现原来,就单纯的看看如何实现废话不多说,咱们直接开始,首先我会模拟一张转账表如下图所示:image.png一张简单的账户表,有name,账户余额等等,接下来我将用三种锁的方式来实现下并发下的互相转账一…

C++中string与int\double等互转

double转为string (int\float等类似) #include <string>#inlcude <sstream>intmain(){doubled123.456; stringstr;   stringstream ss;   ss<<d;   ss>>str;}string转为double(int\float等类似) #include <string>#inlcude <sstream&…

冰原服务器维护,怪猎OL9月20日0:00全区全服维护更新公告

亲爱的猎人&#xff1a;我们将于9月20日0:00对所有大区全部服务器进行更新维护&#xff0c;本次维护预计时间4小时。还请猎人们提早下线&#xff0c;避免不必要的损失。我们将视实际情况提前或延迟开服&#xff0c;感谢大家的支持!维护时间&#xff1a;2016年9月20日(周二)0:00…

属性类:Properties

在一个属性文件中保存了多个属性&#xff0c;每一个属性就是直接用字符串表示出来的"keyvalue对"&#xff0c;而如果想要轻松地操作这些属性文件中的属性&#xff0c;可以通过Properties类方便地完成。 <1>设置和取得属性 import java.util.Properties;// // F…

C#基础之如何判断两个文件内容是否相同

使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码&#xff0c;然后比较两个哈希码是否相同。 该哈希算法为一个文件生成一个小的二进制“指纹”&#xff0c;从统计学的角度来看&#xff0c;不同的文件不可能生成相同的哈希码 要生成一个哈希码&#…

python map lambda 分割字符串_python六剑客:map()、lambda()、filter()、reduce()、推导类表、切片...

一&#xff1a;map():映射map()函数在python2和python3中是区别的python2中的定义&#xff1a;映射后&#xff0c;返回一个列表>>> help(map)Help on built-in function map in module __builtin__:map(...)map(function, sequence[, sequence, ...]) -> listRetur…

WebDAV方式访问Exchange 2003收件箱程序

publicDataTable GetUnReadMail() { stringurl "http://ip/exchange/"; //指定Exchange服务器地址 System.Net.HttpWebRequest Request; System.Net.WebResponse Response; System.Net.CredentialCache MyCredentialCache; stringstrUserName "admi…

Js操作cookie

为什么80%的码农都做不了架构师&#xff1f;>>> 贴上一段js操作cookie的方法&#xff1a; //setCookie function setCookie(cname, cvalue, exdays) { var d new Date(); d.setTime(d.getTime() (exdays*24*60*60*1000)); //day var expires "expires…