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编写Logistic逻辑回归
Dec 30 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
Python with语句上下文管理器两种实现方法分析
Feb 09 Python
Python实现的文本对比报告生成工具示例
May 22 Python
python编辑用户登入界面的实现代码
Jul 16 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
python 调试冷知识(小结)
Nov 11 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 Python
pycharm 实现调试窗口恢复
Feb 05 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
php中socket通信机制实例详解
2015/01/03 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
2018/08/04 PHP
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
详解Document.Cookie
2015/12/25 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
用原生js做单页应用
2017/01/17 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
利用Python命令行传递实例化对象的方法
2016/11/02 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
个人违纪检讨书
2014/09/15 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript
vue cli4中mockjs在dev环境和build环境的配置详情
2022/04/06 Vue.js