【python】文件下载---基础版
基于TCP协议的基础版本,不支持大文件
Client.py
import socket
def main():
# 1. 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 获取服务器的ip port
# dest_ip = input("请输入下载服务器的IP:")
# dest_port = int(input("请输入下载服务器的Port:"))
# 3. 链接服务器
# tcp_socket.connect((dest_ip, dest_port))
tcp_socket.connect(('127.0.0.1', 7890))
# 4. 获取下载的文件名字
download_file_name = input("请输入要下载的文件名字: ")
# 5. 将文件名字发送到服务器
tcp_socket.send(download_file_name.encode('utf-8'))
# 6. 接收文件中的数据
recv_data = tcp_socket.recv(1024) # 1024--->1k
# 7. 保存接收到的数据到文件中
if recv_data:
with open("[新]"+download_file_name,"wb") as f:
f.write(recv_data)
# 8. 关闭套接字
tcp_socket.close()
if __name__ == '__main__':
main()
Server.py
import socket
def send_file_2_client(new_client_socket, client_addr):
# 1. 接收客户端发送过来的,要下载的文件名
file_name = new_client_socket.recv(1024).decode('utf-8')
print("客户端[%s]需要下载的文件是:%s" % (str(client_addr), file_name))
file_content = None
# 2. 打开这个文件,读取数据
try:
f = open(file_name, "rb")
file_content = f.read()
f.close()
except Exception as ret:
print("没有要下载的文件[%s]" % file_name)
# 3. 发送文件的数据给客户端
# new_client_socket.send("hahahah".encode('utf-8')) # 调试的时候,先给发个假得
if file_content:
new_client_socket.send(file_content)
def main():
# 1. 创建套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 创建监听
tcp_server_socket.bind(("", 7890))
# 3. 套接字被动监听数量
tcp_server_socket.listen(128)
while True:
print("wait...")
# 获取客户端socket,客户端连接信息
new_client_socket, client_addr = tcp_server_socket.accept()
# 调用发送文件函数
send_file_2_client(new_client_socket, client_addr)
# 关闭套接字
new_client_socket.close()
tcp_server_socket.close()
if __name__ == '__main__':
main()
【python】文件下载---基础版的更多相关文章
- python tkinter实现俄罗斯方块 基础版
本项目最终效果见本人b站投稿av81480858 简介部分 本项目最终代码已上传github: https://github.com/BigShuang/Tetris 的1_BASIC文件夹 .其中1 ...
- 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天本来应当继续学习Python的数据库操作,但根据过去我自 ...
- Python数据分析基础教程
Python数据分析基础教程(第2版)(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1_FsReTBCaL_PzKhM0o6l0g 提取码:nkhw 复制这段内容后 ...
- Python数据分析基础PDF
Python数据分析基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1ImzS7Sy8TLlTshxcB8RhdA 提取码:6xeu 复制这段内容后打开百度网盘手 ...
- (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md
第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...
- Python入门基础学习 二
Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...
- [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)
[Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...
- 01 基础版web框架
01 基础版web框架 服务器server端python程序(基础版): import socket server=socket.socket() server.bind(("127.0.0 ...
- 像计算机科学家一样思考Python(第2版)|百度网盘免费下载|Python新手入门资料
像计算机科学家一样思考Python(第2版)|百度网盘免费下载 提取码:01ou 内容简介 · · · · · · 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程.贯穿全书的主 ...
随机推荐
- electron---更改安装图标
在用electron开发桌面端的时候,打包成exe文件,需要更改默认的图标: 具体做法: 在根目录新建新建存放icon图标的目录: 需要两个icon:icon.icns,icon.ico 注意: 1. ...
- react问题You must install peer dependencies yourself.
npm WARN react-native@0.46.4 requires a peer of react@16.0.0-alpha.12 but none is installed. You mus ...
- HTML+CSS编写五环居中案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- phpmyadmin上在某数据库里创建函数
改那个PHP项目加了个功能,本地MYSQL里添加了一个函数了,现在要转到服务器上,然后服务器上的MYSQL只能通过PHPMYADMIN网页操作的,在网页上SQL里输入创建函数的语句, 结果报错了:th ...
- sql 时间段交叉查询是否有交集
--双11活动结束时间大于当前服务器时间代表有效期的活动 --实现1 select * from ProdCar A where A.EndDate> GETDATE() and A.EndDa ...
- 014-交互式Shell和shell脚本获取进程 pid
Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...
- Qt开发经验小技巧81-90
Qt中的QColor对颜色封装的很完美,支持各种转换,比如rgb.hsb.cmy.hsl,对应的是toRgb.toHsv.toCmyk.toHsl,还支持透明度设置,颜色值还能转成16进制格式显示. ...
- elasticsearch 搜索提示DSL
1,创建mapping: PUT /news_website { "mappings": { "news" : { "properties" ...
- 【翻译】Flink Table Api & SQL — Hive —— 在 scala shell 中使用 Hive 连接器
本文翻译自官网:Use Hive connector in scala shell https://ci.apache.org/projects/flink/flink-docs-release-1 ...
- 【ML基础】皮尔森相关系数(Pearson correlation coefficient)
前言 参考 1. 皮尔森相关系数(Pearson correlation coefficient): 完