20192305 王梓全Python程序设计实验三报告

课程:《Python程序设计》

班级: 1923

姓名: 王梓全

学号:20192305

实验教师:王志强

实验日期:2021年5月24日

必修/选修:公选课

1.实验内容

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

2.实验过程及结果

  • (1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;
  • (2)让用户输入需要发送的文件名后打开并读取文件内容
  • (3)发送方从文件读取内容,加密后传输;
  • (4)接收方收到密文并解密,保存在文件中。
  • (5)程序代码托管到码云

    发送方

作者:王梓全

import socket

import sys

import base64

try:

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

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

except socket.error as err:

print(err)

sys.exit(1)

except socket.error as err:

print(err)

sys.exit(1)

path = input("请输入待传输文件的路径:")

with open(path, 'r') as object:

str = object.read(1024).encode('utf-8')

print("加密中")

strencode = base64.b64encode(str)

print("加密完毕")

s.sendall(strencode)

data = s.recv(1024)

print(data)

服务器端

作者:王梓全

import socket

import base64

try:

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

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

s.listen()

except socket.error as err:

print(err)

err.exit(1)

conn, address = s.accept()

data = conn.recv(1024)

print("已接收到文件:" + data.decode())

conn.sendall(("服务器已经接收到信号" + str(data)).encode())

with open(r'C:/Intel/receive.txt', 'w+') as rec:

strdecode = base64.b64decode(data)

rec.write(strdecode.decode("utf-8"))

print("已终止")

s.close()



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

  • 问题1:初次使用base64加密,不知道将str转换成byte格式才行
  • 问题1解决方案:上网查找报错原因解决
  • 问题二:对文件操作部分有些遗忘
  • 问题二解决方案:查找了《python从入门到实践》一书获得答案

其他(感悟、思考等)

python是一门面向对象的语言,其语言简洁,且对类型要求较弱,与C语言相比更适合初学者。python中许多语法不加记忆容易遗忘,需要经常的编写程序以及翻看教学资源以求熟练。对比了其他同学做的实验作业,有些编的我都看不懂,感觉自己的差距还是很大的,好好钻研《python从入门到入土》吧

参考资料

  • 《python从入门到实践》

20192305 王梓全Python程序设计实验三报告的更多相关文章

  1. 20192113 2020-2021-2 《Python程序设计》实验三报告

    20192113 2020-2021-2 <Python程序设计>实验三报告 课程:<Python程序设计> 班级: 1921 姓名: 衣丽莎 学号:20192113 实验教师 ...

  2. 20192204李龙威 2019-2020-2 《Python程序设计》实验三报告

    20192204李龙威 2019-2020-2 <Python程序设计>实验三报告 课程:<Python程序设计> 班级: 1922 姓名: 李龙威 学号:20192204 实 ...

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

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

  4. 20172310 2017-2018-2 《程序设计与数据结构》实验三报告(敏捷开发与XP实践)

    20172310 2017-2018-2 <程序设计与数据结构>实验三报告(敏捷开发与XP实践) 课程:<程序设计与数据结构> 班级: 1723 姓名: 仇夏 学号:20172 ...

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

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

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

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

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

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

  8. PYTHON程序设计实验

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

  9. Python程序设计 实验 1 熟悉 IDLE 和在线编程平台

    ------------恢复内容开始------------ 安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2 ...

  10. 20172301 《Java软件结构与数据结构》实验三报告

    20172301 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 郭恺 学号:20172301 实验教师:王志强老师 ...

随机推荐

  1. 推荐一个 python学习网站

    kaggle python课程: https://www.kaggle.com/learn/python 知乎有个博主在专栏放了课程的中文版: https://www.zhihu.com/people ...

  2. 流程图draw.io自选中文字体

    draw.io免费好用,完全可以取代Visio. 唯独缺省选择都是英文字体.但要选择中文字体也可以自行添加,步骤: 确保系统里已经安装了相应中文字体.ubuntu下Google思源字体在/usr/sh ...

  3. 如何进行多平台部署Client和Server详细讲解

    一:signalR把console用做客户端访问服务端方法 1:新建一个控制台应用程序(ClientConsole) 2:用nuget安装SignalR.Client(必须,下面是nuget命令) I ...

  4. IO学习笔记6

    2.3 多路复用 但是NIO仍有它的缺陷,因为服务端和客户端都在一个线程中,主线程遍历客户端集合去每一个客户端都问一遍:你有没有数据,这样的话,如果有10K个客户端,只有最后一个客户端才收到了信息,但 ...

  5. go 语言操作es示例

    使用高度封装的 orm 查询 package main import ( "context" "fmt" "log" "os&qu ...

  6. x264码率控制

    1. x264 1.1 preset 的参数主要调节编码速度和质量的平衡,有ultrafast.superfast.veryfast.faster.fast.medium.slow.slower.ve ...

  7. c++ 函数篇

    1.函数是什么样子: dataType  functionName( dataType1 param1, dataType2 param2 ... ){//do something }//形式参数pa ...

  8. 【OBS Studio】使用 VLC 视频源播放视频报错:Unhandled exception: c0000005

    使用 OBS Studio 和 VLC media player 可以实现视频播放列表的推流,参考『OBS如何添加播放列表?』. 但是使用过程中发现使用 VLC 视频源播放视频时,一个视频播放完切换下 ...

  9. DUBBO消费端Reference初始化

    1. ReferenceBean.java ReferenceBean.java 继承 ReferenceConfig.java, 主要的Reference初始化逻辑都在ReferenceBean的g ...

  10. taobao.tbk.sc.newuser.order.get( 淘宝客-服务商-新用户订单明细查询 )

    淘宝客订单表结构设计(mysql) CREATE TABLE `tbk_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `member_id` bi ...