文件下载器客户端

import socket

def main():
# 1.创建一个tcp socket
tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #2. 连接服务端
tcp_client_socket.connect(('127.0.0.1',9999)) #3. 获取用户输入的文件名
file_name=input("请输入要下载的文件名:") # 4. 把要下载的文件名发给服务端
tcp_client_socket.send(file_name.encode()) #5. 等待接收服务端回传的文件内容
recv_data=tcp_client_socket.recv(1024*1024) # 一次最多接收1M字节
print(recv_data) #6. 假如内容不为空,则写入到文件中
if recv_data:
with open("/home/python/Desktop/"+file_name,"wb") as f:
f.write(recv_data) #7. 关闭tcp socket
tcp_client_socket.close() if __name__ == '__main__':
main()

文件下载器服务端

import socket

def get_file_content(file_name):
"""通过文件名取得文件内容"""
try:
# 打开文件,读取数据 www.png
file=open(file_name,"rb")
content=file.read()
file.close()
return content
except:
print("%s下载的文件找不到"%file_name) def main():
# 1. 创建服务端的socket,用来做监听的
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 复用端口
server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True) # 2. 绑定端口
server_socket.bind(('',9999)) # 3. 开启监听 listen
server_socket.listen(5) # 4. 循环接收客户端的下载请求
while True:
new_sock,client_addr=server_socket.accept()
print("有新的下载请求,来自-->",client_addr) #5. 获取客户端发送过来的要下载的文件名
recv_data=new_sock.recv(1024) # 取得要下载的文件名
# 把字节串转为字符串
file_name=recv_data.decode() # 6.通过函数取得要下载的文件的内容
file_content=get_file_content(file_name) # 7. 把内容回传给客户端
if file_content:
new_sock.send(file_content) # 8. 关闭与客户端对接的socket
new_sock.close()
#9. 关闭服务端server_socket,不再接收新的下载文件的请求
server_socket.close() if __name__ == '__main__':
main()

tcp案例之文件下载器的更多相关文章

  1. 使用网络TCP搭建一个简单文件下载器

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶服务器Server 三丶测试TCP server服务器 四丶客户端Client 五丶测试客户端向服务器下载 ...

  2. {每日一题}:tcp协议实现简单的文件下载器(单任务版)

    文件下载器客户端 这个版本的只是为了方便回顾一下TCP客服端,服务端的创建流程,缺点就是  服务器一次只能让一个人访问下载,过两个写个使用面向对象写一个多线程版的强化一下. from socket i ...

  3. python实现tcp文件下载器

    服务器端代码 import socket import os import threading # 处理客户端请求下载文件的操作(从主线程提出来的代码) def deal_client_request ...

  4. Unity3D 更新文件下载器

    使用说明: 1)远端更新服务器目录 Package |----list.txt |----a.bundle |----b.bundle 2)list.txt是更新列表文件 格式是 a.bundle|r ...

  5. QT--HTTP文件下载器

    QT--HTTP文件下载器 1.pro文件添加 QT       += core gui network 2.头文件 #include <QNetworkAccessManager> #i ...

  6. 洗礼灵魂,修炼python(29)--装饰器(1)—>利用经典案例解析装饰器概念

    前提必备 不急着进入正题,在前面函数作用域那一章介绍了闭包,全局变量局部变量,这里再看几个简单的闭包案例: 1):不带参数 注意: 1.这里的name属性是每个函数都有的,可以反馈函数名 2.temp ...

  7. SpringBoot开发案例之拦截器注入Bean

    前言 由于业务需要,需要在拦截器中操作Redis缓存,按照 controller,service层配置发现无法注入,一直报空指针异常. 解决方案 @Configuration public class ...

  8. AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)

    首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...

  9. Download Shuttle Pro mac文件下载器使用指南

    Download Shuttle Pro是适用于macOS的最强大的下载管理器和加速器.它将文件下载分为多个部分,与使用Web浏览器相比,可以提高整体下载速度.使用我们的Pro版本,您可以访问我们的新 ...

随机推荐

  1. Web Scraping with R: How to Fill Missing Value (爬虫:如何处理缺失值)

    网络上有大量的信息与数据.我们可以利用爬虫技术来获取这些巨大的数据资源. 这次用 IMDb 网站的2018年100部最欢迎的电影 来练练手,顺便总结一下 R 爬虫的方法. >> Prepa ...

  2. Canvas 入门案例

    五.  Canvas 入门案例 1.  canvas 圆形绘制 <!DOCTYPE html> <html lang="en"> <head> ...

  3. maven-将依赖的 jar包一起打包到项目 jar 包中

    前言: 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全,以下有两种方法可以规避这个问题. 一.在pom.xml 文件中 ...

  4. 题解报告:hdu 2072 单词数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题目: Problem Description lily的好朋友xiaoou333最近很空,他想 ...

  5. 如何隐藏electron窗体的菜单栏

    electron中默认带有顶部菜单栏,有时候我们的应用不需要. 再main.js文件中设置 const electron = require('electron') const path = requ ...

  6. Spring @Resource、@Autowired、@Qualifier区别

    @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入: @Autowired默认是按照类型装配注入的,如果想按照名称来转配注入,则需要结合@Qualif ...

  7. SharePoint2013升级SP1后,运行配置向导报错:未注册sharepoint服务

    SharePoint Server 2013 升级SP1后,需要重新运行配置向导,但是运行过程中报错:未注册sharepoint服务. 日志详细错误信息: 已引发类型为 Microsoft.Share ...

  8. Android开发学习——Volley框架

    转载至: http://blog.csdn.net/guolin_blog/article/details/17482095 一些概念性的东西 大家进入上边链接理解,我贴一下 具体的实现代码: pub ...

  9. U9249 【模板】BSGS

    题目描述 给定a,b,p,求最小的非负整数x 满足a^x≡b(mod p) 若无解 请输出“orz” 输入输出格式 输入格式: 三个整数,分别为a,b,p 输出格式: 满足条件的非负整数x 输入输出样 ...

  10. SQLServer性能优化专题

    SQLServer性能优化专题 01.SQLServer性能优化之----强大的文件组----分盘存储(水平分库) http://www.cnblogs.com/dunitian/p/5276431. ...