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 相关文章推荐
使用PYTHON创建XML文档
Mar 01 Python
Python编码爬坑指南(必看)
Jun 10 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
Python解决八皇后问题示例
Apr 22 Python
python绘制热力图heatmap
Mar 23 Python
python的sorted用法详解
Jun 25 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
Python统计分析模块statistics用法示例
Sep 06 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
容易被忽略的Python内置类型
Sep 03 Python
python 将Excel转Word的示例
Mar 02 Python
图神经网络GNN算法
May 11 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 while循环得到循环次数
2013/10/26 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
laravel学习教程之存取器
2016/07/30 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
Python中replace方法实例分析
2014/08/20 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
QA工程师岗位职责
2013/11/20 职场文书
消防安全汇报材料
2014/02/08 职场文书
学徒工职责
2014/03/06 职场文书
安全责任协议书
2014/04/21 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
师范生见习报告
2014/10/31 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
2015年防汛工作总结
2015/05/15 职场文书