20201123 实验三《python程序设计》实验报告
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程序设计》实验报告的更多相关文章
- Python程序设计实验报告三:分支结构程序设计
		安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 姚彩琴 学号3190505129 成绩 日期 2020.4.5 指导老师 修宇 [实验目的 ... 
- Python程序设计实验报告二:顺序结构程序设计(验证性实验)
		安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩 日期 2020.3.22 指导老师 修宇 [实验 ... 
- Python程序设计实验报告一:熟悉IDLE和在线编程平台
		安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩_____ 日期 2020.3.8 指导老师 ... 
- Python程序设计实验报告四:循环结构程序设计(设计型实验)
		安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 姚彩琴 学号3190505129 成绩 日期 2020.4.8 指导老师 修宇 [实验名称 ... 
- 实验四  Android程序设计  实验报告
		实验四 Android程序设计 实验报告 目录 代码托管地址 Android程序设计-1 Android程序设计-2 Android程序设计-3 Android程序设计-4 Android程序设计-5 ... 
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
		20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ... 
- 20155326 实验四 Android程序设计实验报告
		20155326 实验四 Android程序设计实验报告 实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局管理器的使用: 3. ... 
- 20165230 《Java程序设计》实验四 Android程序设计实验报告
		20165230 <Java程序设计>实验四 Android程序设计实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导 ... 
- 实验四 Android程序设计 实验报告 20162305李昱兴
		实验四 Android程序设计 实验报告 20162305李昱兴 一.Android Studio的安装测试 1.有关该软件 Android Studio,是基于Itellij IDEA的一款流行的I ... 
- PYTHON程序设计实验
		Python程序设计实验报告一: 熟悉IDLE和在线编程平台 安徽工程大学 Python程序设计实验报告 班级 物流191 姓名 邹缕学号 3190505117成绩 ▁▁▁ 日期 2020.3.5 指 ... 
随机推荐
- RTTI之typeid运算符
			1 #include <iostream> 2 #include <cstdlib> 3 #include <ctime> 4 #include <typei ... 
- k8s集群部署(2)
			一.利用ansible部署kubernetes准备阶段 1.集群介绍 基于二进制方式部署k8s集群和利用ansible-playbook实现自动化:二进制方式部署有助于理解系统各组件的交互原理和熟悉组 ... 
- linux进阶之Tomcat服务篇
			一.Tomcat简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. Tomca ... 
- linux Generating /run/initramfs/rdsosreport.txt 问题
			Generating /run/initramfs/rdsosreport.txt 问题 实验室异常断电,导致Centos7重启以后出现 Generating "/run/initramfs ... 
- python 交换变量值为何不需要中间变量
			python 元组解包unpacking,同一语句中多重赋值 cpython 认为几种变量的交换是比较常见的,提供了专门的优化指令,像[-5,256]预先放到了整数池中一样, 
- Servlet中的过滤器和监听器
			1.什么是过滤器? Servlet规范中定义的一种特殊的组件,用来拦截容器的调用过程.容器收到请求之后,首先调用过滤器,然后再调用Servlet 2.生命周期: 1.servlet:servlet的生 ... 
- SystemVerilog  MCDF验证结构
			MCDF的设计和验证花费的时间:(工作中假设的时间) design cycle time ==10days how about 验证?verify? 模块越往上(大')验证花费的时间越来越大,但是 ... 
- Java List去重以及效率分析
			List去重无非几种方法: 下面文章提供的两种: https://blog.csdn.net/u012156163/article/details/78338574, 以及使用List.stream. ... 
- kafka实战教程(python操作kafka),kafka配置文件详解
			kafka实战教程(python操作kafka),kafka配置文件详解 应用往Kafka写数据的原因有很多:用户行为分析.日志存储.异步通信等.多样化的使用场景带来了多样化的需求:消息是否能丢失?是 ... 
- Go语言网络通信---tcp上传大文件(粘包问题还需优雅解决)
			server端: package main import ( "bufio" "encoding/binary" "fmt" "n ... 
