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实现批量转换文件编码(批转换编码示例)
Jan 23 Python
python访问系统环境变量的方法
Apr 29 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
Python使用turtule画五角星的方法
Jul 09 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
May 09 Python
PyQt5实现简易计算器
May 30 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
Python中第三方库Faker的使用详解
Apr 02 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
selenium+java中用js来完成日期的修改
2019/10/31 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
python如何查看安装了的模块
2020/06/23 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python如何调用百度识图api
2020/09/29 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
国贸专业的职业规划书
2014/03/15 职场文书
公司授权委托书范文
2014/08/02 职场文书
个人自查自纠材料
2014/10/14 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
创业计划书之物流运送
2019/09/17 职场文书