python基于TCP实现的文件下载器功能案例


Posted in Python onDecember 10, 2019

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

服务器 参考代码如下:

from socket import *
import sys
def get_file_content(file_name):
  """获取文件的内容"""
  try:
    with open(file_name, "rb") as f:
      content = f.read()
    return content
  except:
    print("没有下载的文件:%s" % file_name)
def main():
  if len(sys.argv) != 2:
    print("请按照如下方式运行:python3 xxx.py 7890")
    return
  else:
    # 运行方式为python3 xxx.py 7890
    port = int(sys.argv[1])
  # 创建socket
  tcp_server_socket = socket(AF_INET, SOCK_STREAM)
  # 本地信息
  address = ('', port)
  # 绑定本地信息
  tcp_server_socket.bind(address)
  # 将主动套接字变为被动套接字
  tcp_server_socket.listen(128)
  while True:
    # 等待客户端的链接,即为这个客户端发送文件
    client_socket, clientAddr = tcp_server_socket.accept()
    # 接收对方发送过来的数据
    recv_data = client_socket.recv(1024) # 接收1024个字节
    file_name = recv_data.decode("utf-8")
    print("对方请求下载的文件名为:%s" % file_name)
    file_content = get_file_content(file_name)
    # 发送文件的数据给客户端
    # 因为获取打开文件时是以rb方式打开,所以file_content中的数据已经是二进制的格式,因此不需要encode编码
    if file_content:
      client_socket.send(file_content)
    # 关闭这个套接字
    client_socket.close()
  # 关闭监听套接字
  tcp_server_socket.close()
if __name__ == "__main__":
  main()

客户端 参考代码如下:

from socket import *
def main():
  # 创建socket
  tcp_client_socket = socket(AF_INET, SOCK_STREAM)
  # 目的信息
  server_ip = input("请输入服务器ip:")
  server_port = int(input("请输入服务器port:"))
  # 链接服务器
  tcp_client_socket.connect((server_ip, server_port))
  # 输入需要下载的文件名
  file_name = input("请输入要下载的文件名:")
  # 发送文件下载请求
  tcp_client_socket.send(file_name.encode("utf-8"))
  # 接收对方发送过来的数据,最大接收1024个字节(1K)
  recv_data = tcp_client_socket.recv(1024)
  # print('接收到的数据为:', recv_data.decode('utf-8'))
  # 如果接收到数据再创建文件,否则不创建
  if recv_data:
    with open("[接收]"+file_name, "wb") as f:
      f.write(recv_data)
  # 关闭套接字
  tcp_client_socket.close()
if __name__ == "__main__":
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

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

Python 相关文章推荐
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
使用Python制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
python实现桌面气泡提示功能
Jul 29 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
python 实现PIL模块在图片画线写字
May 16 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
详解python安装matplotlib库三种失败情况
Jul 28 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 Python
使用pandas的box_plot去除异常值
Dec 10 #Python
Python 中如何实现参数化测试的方法示例
Dec 10 #Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 #Python
YUV转为jpg图像的实现
Dec 09 #Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 #Python
Python箱型图处理离群点的例子
Dec 09 #Python
Python实现非正太分布的异常值检测方式
Dec 09 #Python
You might like
PHP操作数组相关函数
2011/02/03 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
Python splitlines使用技巧
2008/09/06 Python
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python 经典数字滤波实例
2019/12/16 Python
python判断链表是否有环的实例代码
2020/01/31 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
cf收人广告词大全
2014/03/14 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
超市理货员岗位职责
2014/07/04 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
起诉状范本
2015/05/20 职场文书
周末问候语大全
2015/11/10 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL