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实现简单的文件传输与MySQL备份的脚本分享
Jan 03 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
django中的HTML控件及参数传递方法
Mar 20 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
Sep 19 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
Python随机数函数代码实例解析
Feb 09 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
Django配置跨域并开发测试接口
Nov 04 Python
Django框架中视图的用法
Jun 10 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脚本数据库功能详解(下)
2006/10/09 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
js 省地市级联选择
2010/02/07 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
js实现下一页页码效果
2017/03/07 Javascript
jquery.uploadView 实现图片预览上传功能
2017/08/10 jQuery
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
微信小程序实现商城倒计时
2020/11/01 Javascript
Python专用方法与迭代机制实例分析
2014/09/15 Python
在Python的Django框架中使用通用视图的方法
2015/07/21 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
基于树莓派的语音对话机器人
2019/06/17 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
Python定义一个函数的方法
2020/06/15 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
工作人员思想汇报
2014/01/09 职场文书
快餐店的创业计划书范文
2014/01/29 职场文书
毕业证委托书范文
2014/09/26 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
推销搭讪开场白
2015/05/28 职场文书