20182204 《Python程序设计》实验三报告

课程:《Python程序设计》

班级:1822

姓名:20182204zwp

学号:20182204

实验教师:王志强老师

实验日期:2020年5月16日

必修/选修: 公选课

2. 实验内容及结果

(一)实验内容

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

(二)实验要求

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

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

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

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

server端代码

importsocketimportstructimportbase64

FILEINFO_SIZE=struct.calcsize('128s32sI8s')

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('127.0.0.1',8001))

s.listen(5)

conn,address=s.accept()print("文件接收开始")

with open('file', 'ab') as f:#接收数据

data = conn.recv(1024)if data == b'quit':

breakpoint()#写入文件

f.write(data)#接受完成标志

conn.send('success'.encode())print("文件接收完成")#关闭连接

print("加密后的内容:")

with open('file', 'r',encoding='UTF-8') as f:

based_data1=f.readline().encode()print(based_data1)

plain_data1=base64.b64decode(based_data1)

open("file", "w").close()

with open('file', 'wb') as f:

f.write(plain_data1)print("解密后的内容:")

with open('file', 'r',encoding='UTF-8') as f:print(f.readline())

with open("file",'rb') as f:for i inf:

conn.send(i)

data=conn.recv(1024)if data!= b'success':breakconn.send('quit'.encode())

s.close()

client端代码

importsocketimportbase64

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(('127.0.0.1', 8001))print("加密后的内容:")

with open(r"C:\Users\86138\Desktop\1822\20182204.txt", 'r',encoding='UTF-8') as f:

data=f.readline().encode()

based_data1=base64.b64encode(data)print(based_data1)

open(r"C:\Users\86138\Desktop\1822\20182204.txt", "w").close()

with open(r"C:\Users\86138\Desktop\1822\20182204.txt", 'wb') as f:

f.write(based_data1)

with open(r"C:\Users\86138\Desktop\1822\20182204.txt", 'rb') as f:for i inf:

s.send(i)

data= s.recv(1024)if data != b'success':breaks.send('quit'.encode())print("解密后的内容:")

file= s.recv(1024)

with open('file', 'r', encoding='UTF-8') as f:print(f.readline())

f.close()

实验结果截图

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

问题1:遇到了编码的问题,此处应该是str类型不应该是byte类型

问题1解决方案:百度后得知,用decode完美解决

问题2:加密解密问题

问题2解决方案:王老师里面发了连接,我挑了一个比较简单的base加解密算法,完美解决

感悟

本次实验令我受益良多,更好的理解了服务器与客户端之间的连接传输,更灵活的应用了加解密算法。

python语言程序设计实验教程答案实验三_20182204 实验三《Python程序设计》实验报告...相关推荐

  1. python语言设计二级教程答案2019_全国计算机等级考试二级教程2019年版——Python语言程序设计参考答案...

    第二章 Python语言基本语法元素 一.选择题 C B B C A D B A D B 二.编程题 1.获得用户输入的一个整数N,计算并输出N的32次方. 在这里插入图片描述 2.获得用户输入的一段 ...

  2. python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...

    python语言程序设计基础课后答案第二章 以下合法的用户自定义标识符是____________. 导入模块或者模块中的元素要使用关键字________ . 下列哪个函数是用来控制画笔的尺寸的____ ...

  3. 计算机硬件实验教程pdf,计算机硬件技术基础实验教程答案(重庆大学)

    计算机硬件技术基础实验教程答案(重庆大学) 计算机硬件技术基础实验教程答案 实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 ...

  4. 计算机应用基础实验教程练习题答案,计算机应用基础实验教程答案.doc

    计算机应用基础实验教程答案 [篇一:大学计算机基础习题与实验指导 --课后习题答 案] ss=txt> 习题答案 第二章 1,简述计算机中如何区分汉字编码和 ascii 码 asc Ⅱ码与汉字编 ...

  5. [学习笔记]黑马程序员Spark全套视频教程,4天spark3.2快速入门到精通,基于Python语言的spark教程

    文章目录 视频资料: 思维导图 一.Spark基础入门(环境搭建.入门概念) 第二章:Spark环境搭建-Local 2.1 课程服务器环境 2.2 Local模式基本原理 2.3 安装包下载 2.4 ...

  6. python语言包含的错误,Python语言程序中包含的错误,一般分为三种,以下____________不是其中的一种...

    Python语言程序中包含的错误,一般分为三种,以下____________不是其中的一种 答:编译错误 人体体温能自动调控在37度,其原因是( ). 答:人体内产生的热能是分批放出的 人体内有完善的 ...

  7. python语言入门m-Python2 教程

    Python是什么? Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明 ...

  8. c4d python使用方法_C4D Python语言代码编程教程 Cineversity - Introduction to Python in C4D | 龋齿一号GFXCamp...

    C4D Python语言代码编程教程 Cineversity –  Introduction to Python in C4D 讲解C4D Python语法,利用Python制作和编辑简单的物体,改变 ...

  9. python语言智慧树期末答案_Python语言应用智慧树答案章节作业期末答案

    Python语言应用智慧树答案章节作业期末答案 更多相关问题 [单选题]112.定义如下变量: int n=10; 则下列循环的输出结果是_______. while(n>7) { n--; p ...

最新文章

  1. Go 语言配置 TensorFlow
  2. LCA 在线倍增法 求最近公共祖先
  3. 找ipcore的地方
  4. 计算机主板等级指标,转载一篇主板文章,教你认识三大厂主板分级
  5. 浏览器自动化操作标准--WebDriver
  6. prd展示html文件,prd目的.html
  7. 课时77.序选择器(掌握)
  8. 【贪心】Vijos P1615 旅行
  9. BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )
  10. odom_out_and_back.cpp
  11. Qt4_子类化QMainWindow
  12. SqlServer中 SET DATEFIRST
  13. 通过对极几何求解相机运动
  14. 为静态Checkbox动态地添加checked属性
  15. [2020-07]如何获取百度访客搜索关键字(竞价、推广、SEO)
  16. 【将多个Excel合并成一个Excel】
  17. rs485接口上下拉_RS485使用注意事项(上下拉电阻)
  18. Flash鼠标拖尾效果——粒子
  19. 阿里云RDS数据库如何远程访问
  20. 手机端html跑马灯效果,jQuery实现适用于移动端的跑马灯抽奖特效示例

热门文章

  1. 无法将输入值传递给JavaScript变量
  2. 残疾人软件开发_更高级别的可访问性:我使freeCodeCamp指南对残疾人可用的5种方式...
  3. matlab的pulse使用想法
  4. 动态HTML处理和机器图像识别
  5. table标签+css代码实现选项卡效果(用)
  6. 成交量与股价的关系图解
  7. 本地计算机用plsql访问虚拟机中的oracle数据库
  8. oracle的临时表和With As总结
  9. 【深度学习】简单理解Batch Normalization批标准化
  10. bat从数组中找出相同数字并删除_全网把Map中的hash()分析的最透彻的文章,别无二家...