python程序设计实验配置_20181235 实验三《Python程序设计》实验报告
# 学号 2019-2020-2 《Python程序设计》实验x报告
课程:《Python程序设计》
班级: 1812
姓名: 周昱涵
学号:20181235
实验教师:王志强
实验日期:2020年5月16日
必修/选修: 公选课
## 1.实验内容
创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
## 2. 实验过程及结果
(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
(2)要求包含文件的基本操作,例如打开和读写操作。
(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。
(4)程序代码托管到码云。
运用socket编程技术进行传输,后利用加密函数对传输的文件进行加密,这里我选择的是base64加密,通过调用base64库对他进行加密,
例如我的文件里面写的是:
zhouyuhan666666666zhou
进行加密后的密文是:
b'emhvdXl1aGFuNjY2NjY2NjY2emhvdQ=='
代码运行结果截图如下:
代码如下:
import socket
import os
import sys
import struct
import base64
# -*- coding:UTF-8 -*-
def socket_service_image():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('127.0.0.1', 6666))
s.listen(10)
except socket.error as msg:
print(msg)
sys.exit(1)
print("Wait for Connection.....................")
while True:
sock, addr = s.accept()
deal_image(sock, addr)
def deal_image(sock, addr):
print("Accept connection from {0}".format(addr))
while True:
fileinfo_size = struct.calcsize('128sq')
print('fileinfo_size is', fileinfo_size)
buf = sock.recv(fileinfo_size)
print('buf is ', buf)
if buf:
filename, filesize = struct.unpack('128sq', buf)
print('filename ,filesize is', filename.decode(), filesize)
fn = filename.decode().strip('\x00')
print('fn is ', fn)
new_filename = os.path.join('./','new_' + fn)
recvd_size = 0
fp = open(new_filename, 'wb')
while not recvd_size == filesize:
if filesize - recvd_size > 1024:
data = sock.recv(1024)
recvd_size += len(data)
else:
data = sock.recv(1024)
recvd_size = filesize
print(data)
data=base64.b64decode(data)
print('data is', data)
fp.write(data)
fp.close()
sock.close()
break
if __name__ == '__main__':
socket_service_image()
import socket
import os
import sys
import struct
import base64
# -*- coding:UTF-8 -*-
def sock_client_image():
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 6666))
except socket.error as msg:
print(msg)
print(sys.exit(1))
filepath = input('input the file: ')
fhead = struct.pack(b'128sq', bytes(os.path.basename(filepath), encoding='utf-8'),os.stat(filepath).st_size)
s.send(fhead)
fp = open(filepath, 'rb')
while True:
data = fp.read(1024)
datq1 = base64.b64encode(data)
if not data:
print('{0} send over...'.format(filepath))
break
print(datq1)
s.send(datq1)
s.close()
if __name__ == '__main__':
sock_client_image()
## 3. 实验过程中遇到的问题和解决过程
- 问题1:加密方法的选择
- 问题1解决方案:进行百度了解有什么加密方法
## 其他(感悟、思考等)
socket编程可以可以完成俩个机器的交互,这种编程十分的有意思,和我平常的编程不同他可以给别人发送文件或者接收文件
来源:https://www.cnblogs.com/394991776zyh/p/12898847.html
python程序设计实验配置_20181235 实验三《Python程序设计》实验报告相关推荐
- emacs python plugin_Windows上配置Emacs来开发Python及用Python扩展Emacs
Windows下配置Emacs来开发Python去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候,喜欢跟大众唱反调的我,突然觉得如果能用Emacs来编代码, ...
- python多线程并发编程技术_三 python并发编程之多线程-理论
一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...
- python环境变量配置_怎么搭建python环境?很简单,就几步的事
现在学习python的人越来越多了,而学习python必备的就是搭建python环境,那么,到底怎么搭建python环境呢? 首先,你需要有安装包,这个去官网下载就可以了,如果不会的话,可以看文章底部 ...
- 利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标
本文主要讲述利用Python将文本格式的地址转换为数字格式的经纬度坐标数据,主要步骤有: 注册高德地图API账号,申请Web服务的Key 了解并测试地理编码API服务 利用Python实现地址转坐标 ...
- JDK,python环境变量配置
一.下载JDK和Python 这个自行在官网下载就可以了 二.配置JDK环境变量 1.进入设置界面 右键点击我的电脑--属性--高级系统设置--环境变量 2.用户变量和系统变量 系统变量:就是整个电脑 ...
- HNU-电子测试平台与工具-三人表决器实验报告
该报告最后的得分为100分/100分. 作者认为可以将它发出来,为有需要的同学,特别是该大学该门科目的后继者提供帮助与解答. 如果喜欢可以点个赞哦,感谢. 三人表决器实验报告 班级:计XXXXX 学号 ...
- 学习Python全套代码【超详细】Python入门、核心语法、数据结构、Python进阶【致那个想学好Python的你】
大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 文末附上详细的 ...
- python程序的三种基本结构是_Python程序设计实验五- 综合运用三种基本结构进行程序设计...
安徽工程大学 [Python程序设计]实验报告 班级 :物流192 姓名:刘娇阳 学号:3190505213 成绩: 日期:2020.4.24 指导老师 :修宇 [实验名称]实验五 综合运用三种基本结 ...
- python编写程序求e的值_Python 程序设计实验报告4
安徽工程大学 Python 程序设计实验报告 班级:物流 191 姓名:余嘉 学号:3190505116 成绩: 日期:2020/4/6 指导老师:修宇 实验名称:循环结构程序设计 实验目的: 1.熟 ...
最新文章
- 字符串插入_计算机毕业设计中小程序插入html代码
- 尝试引用已删除的函数_学Excel函数公式,你必须要掌握这些知识
- 斯坦福被炮轰:用算法分配5000支新冠疫苗,医护人员只有7支
- python使用符号#表示单行注释-Python中注释(多行注释和单行注释)的用法实例...
- cmw500综合测试仪使用_综合布线中手持式测试仪
- 树状数组相关应用之区间包含问题
- 【蚂蚁链学习1】初识蚂蚁链的智能合约(solidity)
- 谈谈层次分析法和熵权法以及Topsis
- Linux命令之新增组groupadd
- Angular9 + Primeng手动搭建项目
- 戴尔游匣7559更换C面和D面以及升级内存硬盘教程
- 读书笔记:软件工程(11) - 传统方法学 - 软件需求分析
- 打开微信时站着的小人是谁?
- html标识标志相关符号
- 任正非 采访 安卓 鸿蒙,法媒专访任正非透露“鸿蒙”系统“很可能”快过安卓...
- 什么是PV、UV、QPS、TPS等专业术语?
- 2011 Heilongjiang collegiate programming contest 【(7+1)/10】 [补完]
- 后台管理系统中的CRUD【以用户维护为例】
- Dubbo重启一年,尚能饭否?
- 资深讲师分享大数据分析师职业规划