20201123 2020-2021-2 《python程序设计》实验三报告

课程:《Python程序设计》
班级:2011
姓名:晏鹏捷
学号:20201123
实验教师:王志强
实验日期:2021年5月29日
必修/选修:公选课

一、实验内容

创建服务端和客户端

服务端在特定端口监听多个客户请求

客户端和服务端通过Socket套接字(TCP/UDP)进行通信

二、实验要求

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

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

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

4、程序代码托管到码云

三、实验过程

1、 TCP客户端

(1)创建套接字,连接远程地址

import socket#客户端的socket初始化

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 参数1:服务器之间网络通信;参数2:流式socket , for TCP

s.connect(('127.0.0.1', 8001))#连接,元组形式,(IP地址,端口)

(2)连接后发送、接收数据

str = input(“请输入要传输内容”)

s.sendall(str.encode())

data = s.recv(1024)

print(data.decode())

(3)传输完毕,关闭套接字

s.close()

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

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

2、TCP服务端

(1)创建套接字,绑定套接字到IP与端口

import socket#客户端的socket初始化

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 参数1:服务器之间网络通信;参数2:流式socket , for TCP

s.bind(('127.0.0.1', 8001))#连接,元组形式,(IP地址,端口)

(2)开始监听连接

s.listen()

(3)进入循环,接收客户端的连接请求

conn, address = s.accept()

(4)接收数据并发送给对方

data = conn.recv(1024)

print(data.decode())

conn.sendall((“服务器已经接收到数据:”+str(data.decode())).encode())

(5)传输完毕,关闭套接字

s.close()

3、循环通讯

4、发送、接收文件

(1)客户端

发送:

接收:

(2)服务端

传输:

接收:

5、加密、解密文件

加密:

解密:

四、遇到问题和解决过程
1、问题:代码太多太复杂,对于基础特别弱的我来说头疼不已
     解决方案:一点一点慢慢研究,要有耐心,不能急躁
2、问题:找不到实验时的相关代码和截图了
     解决方案:先弄懂具体的操作和步骤,之后有时间记得补上

五、感悟思考
      1、这次实验真的好难,靠着同学的教学和讲解才琢磨出一点点,因为代码需要多次修改完善美化但是个人能力达不到,在实验过程中的确出现多次气馁和想放弃的心态,加上个人整理原因原本应该保存的代码和运行截图全部丢失,导致这次实验报告显得简陋匆忙,在今后自学的过程中,一定一定要吸取教训,舍得花时间,不要着急,慢慢修改。

2、从网上寻找的方法和代码有时可能超出现有能力范围,导致头脑混乱,容易晕,有些代码还需要自己修改才能运行的,也是考验个人基础知识的一种途径。所以在面临长难代码的debug时,以前会头疼不已,现在试着多冷静找问题了

六、 参考资料

https://blog.csdn.net/yangxiaodong88/article/details/80801278

https://blog.csdn.net/weixin_42930696/article/details/103722488?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

https://blog.csdn.net/wangtaotao_/article/details/97175108

https://blog.csdn.net/qq_34062683/article/details/78063035

https://viewer.mosoteach.cn/viewer?token=f81e9bfbde05e12df3bf8f3de97e9cbc&screenx=false&app_id=MTWEB&app_version=5.3.3&location=

https://www.mosoteach.cn/web/index.php?c=res&m=index&clazz_course_id=3618F6B1-9D43-4EF0-85E9-8342969DB202

20201123 实验三《python程序设计》实验报告的更多相关文章

  1. Python程序设计实验报告三:分支结构程序设计

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2020.4.5     指导老师       修宇 [实验目的 ...

  2. Python程序设计实验报告二:顺序结构程序设计(验证性实验)

      安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩 日期     2020.3.22     指导老师       修宇 [实验 ...

  3. Python程序设计实验报告一:熟悉IDLE和在线编程平台

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩_____           日期     2020.3.8     指导老师  ...

  4. Python程序设计实验报告四:循环结构程序设计(设计型实验)

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2020.4.8     指导老师       修宇 [实验名称 ...

  5. 实验四 Android程序设计 实验报告

    实验四 Android程序设计 实验报告 目录 代码托管地址 Android程序设计-1 Android程序设计-2 Android程序设计-3 Android程序设计-4 Android程序设计-5 ...

  6. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  7. 20155326 实验四 Android程序设计实验报告

    20155326 实验四 Android程序设计实验报告 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3. ...

  8. 20165230 《Java程序设计》实验四 Android程序设计实验报告

    20165230 <Java程序设计>实验四 Android程序设计实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导 ...

  9. 实验四 Android程序设计 实验报告 20162305李昱兴

    实验四 Android程序设计 实验报告 20162305李昱兴 一.Android Studio的安装测试 1.有关该软件 Android Studio,是基于Itellij IDEA的一款流行的I ...

  10. PYTHON程序设计实验

    Python程序设计实验报告一: 熟悉IDLE和在线编程平台 安徽工程大学 Python程序设计实验报告 班级 物流191 姓名 邹缕学号 3190505117成绩 ▁▁▁ 日期 2020.3.5 指 ...

随机推荐

  1. BUAA-OO-第三单元总结

    面向对象第三单元JML总结 JML理论基础及工具链梳理 JML语言理论基础 JML语言是对于JAVA进行规格化设计的一种表述语言,他能以一种统一化语言,逻辑性强的格式,向程序设计者描述这一方法实现的功 ...

  2. vue3.0API详解

    Vue 3.0 于 2020-09-18 发布了,使用了 Typescript 进行了大规模的重构,带来了 Composition API RFC 版本,类似 React Hook 一样的写 Vue, ...

  3. Spring Cloud Gateway 之获取请求体(Request Body)的几种方式

    Spring Cloud Gateway 获取请求体 一.直接在全局拦截器中获取,伪代码如下 private String resolveBodyFromRequest(ServerHttpReque ...

  4. mysql order by 多样依照排序

    如果先按a排序升序,a相同时按b降序排序 则order by a,b desc

  5. ES6对象的新增方法的使用

    Object.assign Object Object.assign(target, ...sources) 将所有可枚举属性的值从一个或多个源对象复制到目标对象 参数: target 目标对象 so ...

  6. [BD] Sqoop

    什么是Sqoop 数据交换工具(ETL):RDBMS(MySQL.Oracle等)<-->Sqoop<-->HDFS(HBase.Hive等) 基于JDBC 执行数据交换时,本 ...

  7. BRAM 和 DRAM 区别

    转载: BRAM和DRAM的区别 Xilinx的FPGA开发板可以直接调用RAM,其中包括了BRAM和DRAM.经过网上查找资料发现,这两者的区别在于: 选择distributed memory ge ...

  8. spec2006与spec2000的对比简要说明

    ec2006使用说明  2014-10-10 五 性能测试  benchmark 一.工具介绍 SPEC CPU 2006 benchmark是SPEC新一代的行业标准化的CPU测试基准套件.重点测试 ...

  9. 11.2 uptime:显示系统的运行时间及负载

    uptime命令可以输出当前系统时间.系统开机到现在的运行时间.目前有多少用户在线和系统平均负载等信息. [root@cs6 ~]# uptime   17:02:25 up 1:48, 3 user ...

  10. 9.7 top:实时显示系统中各个进程的资源占用状况

    top命令 用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式 ...