文件下载案例 | 学习笔记

简介: 快速学习 文件下载案例

开发者学堂课程【Python入门 2020年版文件下载案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10464


文件下载案例


内容介绍

一. 原始代码

二. 说明

三. 最终代码


.原始代码

1.文件下载客户端原始代码

import socket

s=socket.socket(socket.AF INET, socket.SOCK STREAM)

s.connect(('192.168.31.199'9090))

# s.send('hello'encode('utf8'))

file name=input('清输入您要下载的文件名:") s.send(file name.encode('utf8'))

content=srecv(1024)decode('utf8')  //接收服务器返回的文件

with open(file name, 'w', encoding='utf8') as file:

file.write(content)

s.close()

说明:

发送与接收过程为客户端告诉服务器想要文件的名称,服务器读取到名称后将文件发送给客户端。

先写入 socket 后连接到端口号和 ip 地址,再用 s.send 发送消息启动文件下载服务器后文件下载服务器可以收到消息

 image.png

content=srecv(1024)decode('utf8')接收服务器发送的文件

image.png

2.文件下载服务器原始代码

import socket

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

server_socket.bind(('192.168.31.199'9090)) server

server socket.listen(128)

#接收客户端的请求

client_socket,client_addr=server_socket.accept()

data=client_socket.recv(1024).decode('utf8')

if os.path.isfile(data):

#print('读取文件,返回给客户端)

with open(data, 'r', encoding='utf8') as file://data 保存发送端想要文件的名称

content =file.read()//读取文件

client socket.send(content.encode('utf8'))//通过客户端的 socket 返回给客户端

else:

print('文件不存在')

说明:

首先写入 socket,绑定 ip 地址和和端口号,写入监听和接收客户端请求


.说明

1.虚拟机作为客户端,windows 作为服务器,将 windows 中的文件 demo 下载到虚拟机中再用 client_socket.recv 读取数据

2.以上两段代码不能将图片打开,应该将所打开图片以二级制形式打开,并且加入读取网卡中字节的循环:

content =s.recv(1024)

if not content:

Break

3.代码运行过程

先输入要下载文件的名字,把文件名发给服务端,服务端接收之后通过 file.write(content )把内容写进来就完成了

4.不完善之处

在文件下载客户端中写入不存在的文件时,也能创建此文件,但此文件为空


.最终代码(可以传送图片)

1.文件下载服务器最终代码

import socket

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

server_socket.bind(('192.168.31.199',9090)) server socket.listen(128)

#接收客户端的请求

client socket, client addr=server socket.accept()

data=client socket.recv(1024).decode('utf8')

print('接收到了来自{}地址{}端口的数据,内容是:{}'.format(client addr[0], client addr[1],data))

if os.path.isfile(file name):

#print(读取文件,返回给客户端)

with open(file_name, 'rb') as file:

content =file.read()

client_socket.send(content)

else:

print('文件不存在')

2.文件下载客户端最终代码

import socket

s=socket.socket(socket.AF INET, socket.SOCK STREAM)

s.connect(('192.168.31.199',9090))

# s.send('hello'encode('utf8'))

file name=input("清输入您要下载的文件名:)

s.send(file name.encode('utf8'))

with open(file name, 'wb')as file:

while True:

content =s.recv(1024)

if not content:

break

file.write(content )

s.close()

相关文章
|
2月前
|
弹性计算 网络协议 Linux
阿里云服务器简介及使用教程,附送云服务器ECS自定义创建流程
阿里云ECS是安全可靠、弹性灵活的云计算服务,支持多种实例规格与操作系统,可快速创建和管理云服务器。本文详解ECS介绍、购买流程及使用教程,涵盖配置选择、网络设置、安全组规则等,助您轻松上手。
439 16
|
7月前
|
人工智能 数据挖掘 自然语言处理
客户案例 | Salesforce助力海辰储能在国内外加速数字化转型
海辰储能成功在国内上线阿里云上的 Salesforce 项目。海外团队也紧随其后,顺利部署了 Salesforce 国际版,在全球范围内加速了数字化转型的脚步。
客户案例 | Salesforce助力海辰储能在国内外加速数字化转型
|
算法 Java 开发者
《黑神话:悟空》Xbox版的技术挑战与解决方案
【8月更文第26天】《黑神话:悟空》是一款备受期待的动作角色扮演游戏,以其精美的画面和丰富的中国神话故事背景而闻名。本篇文章将重点介绍游戏在Xbox平台上的技术挑战及其解决方案,特别是针对内存管理的问题。通过深入分析,我们将了解开发团队是如何克服这些挑战,确保游戏在Xbox上能够流畅运行的。
489 4
|
9月前
|
机器学习/深度学习 人工智能 算法
《AI重塑无线网络:化解信号干扰与波动难题》
无线网络在数字化时代至关重要,但信号干扰与波动(如同频干扰、邻频干扰及物理环境变化等)严重影响性能。传统方法虽能缓解部分问题,但在复杂动态环境中效果有限。人工智能的引入,通过机器学习和强化学习,实现了智能信道选择、功率控制及干扰消除,显著提升网络稳定性与效率。实际应用中,智能工厂和大型商场的案例证明了AI技术的有效性。未来,随着AI不断发展并与其他技术融合,无线网络将更稳定高效,为用户带来更优体验。
449 5
|
12月前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
194 21
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
543 1
|
11月前
|
缓存 安全 数据挖掘
阿里云服务器目前活动中各实例规格适用场景汇总,选择指南参考
本文将基于2025年阿里云服务器相关活动的最新内容,对各个实例规格的适用场景进行详细汇总,并提供选择指南参考,帮助用户轻松选购到最适合自己的云服务器实例。
|
开发工具 开发者
Flutter&鸿蒙next 状态管理高级使用:深入探讨 Provider
本文深入探讨了 Flutter 中 Provider 的高级用法,涵盖多 Provider 组合、Selector 优化性能、ChangeNotifierProxyProvider 管理依赖关系以及自定义 Provider。通过这些技巧,开发者可以构建高效、可维护的响应式应用。
447 2
|
存储 边缘计算 数据处理
边缘计算和云计算的区别
边缘计算和云计算是两种不同的计算范式。云计算通过互联网提供集中式处理、可扩展性和成本效益等优势,而边缘计算则在数据源附近进行分布式处理,具有低延迟、带宽优化和本地化决策等优点。两者在响应时间、网络带宽和安全性方面有显著区别,常互补使用以满足不同应用场景的需求。
1353 3
|
机器学习/深度学习 人工智能 算法
数据挖掘/深度学习-高校实训解决方案
云原生一站式机器学习/深度学习/大模型AI平台,支持sso登录,多租户,大数据平台对接,notebook在线开发,拖拉拽任务流pipeline编排,多机多卡分布式训练,超参搜索,推理服务VGPU,边缘计算,serverless,标注平台,自动化标注,数据集管理,大模型微调,vllm大模型推理,llmops,私有知识库,AI模型应用商店,支持模型一键开发/推理/微调,支持国产cpu/gpu/npu芯片,支持RDMA,支持pytorch/tf/mxnet/deepspeed/paddle/colossalai/horovod/spark/ray/volcano分布式,私有化部署。
438 0