Python socket实现的文件下载器功能示例


Posted in Python onNovember 15, 2019

本文实例讲述了Python socket实现的文件下载器功能。分享给大家供大家参考,具体如下:

文件下载器

先写客户端再写服务端

1.tcp下载器客户端

import socket
def main():
  # 创建套接字
  tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 获取服务器ip和port
  dest_ip = input("请输入下载服务器的ip:")
  dest_port = int(input("请输入下载服务器的port:"))
  # 连接服务器
  tcp_socket.connect((dest_ip,dest_port))
  # 获取下载的文件名称
  download_file_name = input("请输入要下载的文件名称:")
  # 将文件名称发送到服务器
  tcp_socket.send(download_file_name.encode("gbk"))
  # 接收文件中的数据
  recv_data = tcp_socket.recv(1024) # 1024=1k 1024*1024=1M
  if recv_data:
    # 保存接收到的数据到新文件
    with open("[新]"+download_file_name.wb) as f:
      f.write(recv_data)
  # 关闭套接字
  tcp_socket.close()
if __name__ == '__main__':
  main()

2.tcp下载器服务端

import socket
def send_file_2_client(new_client_socket,client_addr):
  # 1.接收客户端需要下载的文件名
  file_name = new_client_socket.recv(1024).decode("gbk")
  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.发送文件数据给客户端
  if file_content:
    new_client_socket.send(file_content)
def main():
  # 创建套接字
  tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 绑定本地信息
  tcp_server_socket.bind("",7890)
  # 让默认套接字由主动变为被动listen
  tcp_server_socket.listen(128)
  while True:
    # 等待客户端的连接 accept
    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 Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
在Linux命令行终端中使用python的简单方法(推荐)
Jan 23 Python
Python学习思维导图(必看篇)
Jun 26 Python
简单实现python画圆功能
Jan 25 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
详解python运行三种方式
May 13 Python
pybind11和numpy进行交互的方法
Jul 04 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
Python3实现汉语转换为汉语拼音
Jul 08 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
Python龙贝格法求积分实例
Feb 29 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
Django通过dwebsocket实现websocket的例子
Nov 15 #Python
Python numpy线性代数用法实例解析
Nov 15 #Python
Django中提示消息messages的设置方式
Nov 15 #Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 #Python
Django实现简单网页弹出警告代码
Nov 15 #Python
使用Python函数进行模块化的实现
Nov 15 #Python
Python argparse模块应用实例解析
Nov 15 #Python
You might like
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
js或css实现滚动广告的几种方案
2010/01/28 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
python中xrange用法分析
2015/04/15 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
Python zip函数打包元素实例解析
2019/12/11 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Python基于requests库爬取网站信息
2020/03/02 Python
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
质检部部长职责
2013/12/16 职场文书
毕业设计计划书
2014/01/09 职场文书
学校运动会开幕词
2016/03/03 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP