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中的readline()方法的使用
May 24 Python
python实现识别相似图片小结
Feb 22 Python
python正则分析nginx的访问日志
Jan 17 Python
python数据结构之列表和元组的详解
Sep 23 Python
python多维数组切片方法
Apr 13 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
django 多数据库及分库实现方式
Apr 01 Python
浅析Python 条件控制语句
Jul 15 Python
python实现画图工具
Aug 27 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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/05/18 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
深入浅出分析Python装饰器用法
2017/07/28 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
单位单身证明样本
2014/10/11 职场文书
宣传稿格式范文
2015/07/23 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
入党申请书格式
2019/06/20 职场文书
Python实现聚类K-means算法详解
2022/07/15 Python