# 学号 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程序设计》实验报告相关推荐

  1. emacs python plugin_Windows上配置Emacs来开发Python及用Python扩展Emacs

    Windows下配置Emacs来开发Python去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候,喜欢跟大众唱反调的我,突然觉得如果能用Emacs来编代码, ...

  2. python多线程并发编程技术_三 python并发编程之多线程-理论

    一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...

  3. python环境变量配置_怎么搭建python环境?很简单,就几步的事

    现在学习python的人越来越多了,而学习python必备的就是搭建python环境,那么,到底怎么搭建python环境呢? 首先,你需要有安装包,这个去官网下载就可以了,如果不会的话,可以看文章底部 ...

  4. 利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标

    本文主要讲述利用Python将文本格式的地址转换为数字格式的经纬度坐标数据,主要步骤有: 注册高德地图API账号,申请Web服务的Key 了解并测试地理编码API服务 利用Python实现地址转坐标 ...

  5. JDK,python环境变量配置

    一.下载JDK和Python 这个自行在官网下载就可以了 二.配置JDK环境变量 1.进入设置界面 右键点击我的电脑--属性--高级系统设置--环境变量 2.用户变量和系统变量 系统变量:就是整个电脑 ...

  6. HNU-电子测试平台与工具-三人表决器实验报告

    该报告最后的得分为100分/100分. 作者认为可以将它发出来,为有需要的同学,特别是该大学该门科目的后继者提供帮助与解答. 如果喜欢可以点个赞哦,感谢. 三人表决器实验报告 班级:计XXXXX 学号 ...

  7. 学习Python全套代码【超详细】Python入门、核心语法、数据结构、Python进阶【致那个想学好Python的你】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 文末附上详细的 ...

  8. python程序的三种基本结构是_Python程序设计实验五- 综合运用三种基本结构进行程序设计...

    安徽工程大学 [Python程序设计]实验报告 班级 :物流192 姓名:刘娇阳 学号:3190505213 成绩: 日期:2020.4.24 指导老师 :修宇 [实验名称]实验五 综合运用三种基本结 ...

  9. python编写程序求e的值_Python 程序设计实验报告4

    安徽工程大学 Python 程序设计实验报告 班级:物流 191 姓名:余嘉 学号:3190505116 成绩: 日期:2020/4/6 指导老师:修宇 实验名称:循环结构程序设计 实验目的: 1.熟 ...

最新文章

  1. 字符串插入_计算机毕业设计中小程序插入html代码
  2. 尝试引用已删除的函数_学Excel函数公式,你必须要掌握这些知识
  3. 斯坦福被炮轰:用算法分配5000支新冠疫苗,医护人员只有7支
  4. python使用符号#表示单行注释-Python中注释(多行注释和单行注释)的用法实例...
  5. cmw500综合测试仪使用_综合布线中手持式测试仪
  6. 树状数组相关应用之区间包含问题
  7. 【蚂蚁链学习1】初识蚂蚁链的智能合约(solidity)
  8. 谈谈层次分析法和熵权法以及Topsis
  9. Linux命令之新增组groupadd
  10. Angular9 + Primeng手动搭建项目
  11. 戴尔游匣7559更换C面和D面以及升级内存硬盘教程
  12. 读书笔记:软件工程(11) - 传统方法学 - 软件需求分析
  13. 打开微信时站着的小人是谁?
  14. html标识标志相关符号
  15. 任正非 采访 安卓 鸿蒙,法媒专访任正非透露“鸿蒙”系统“很可能”快过安卓...
  16. 什么是PV、UV、QPS、TPS等专业术语?
  17. 2011 Heilongjiang collegiate programming contest 【(7+1)/10】 [补完]
  18. 后台管理系统中的CRUD【以用户维护为例】
  19. Dubbo重启一年,尚能饭否?
  20. 资深讲师分享大数据分析师职业规划

热门文章

  1. linux正则 转义字符,正则表达式(5):转义符
  2. chr sqlserver_SQLServer常用函数对比
  3. 基于CentOS7,MySQL5.7的高可用MHA架构搭建实战
  4. springboot 整合hbase
  5. read 系统调用剖析【转】
  6. ucGUI 架构介绍
  7. C#学习笔记之-----倒序输出字符串
  8. 思科生成树协议STP/RSTP
  9. 团队项目:过山车游戏的设想
  10. 3G或应尽早步入细分市场时代