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中为feedparser设置超时时间避免堵塞
Sep 28 Python
Python实现数通设备端口使用情况监控实例
Jul 15 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
Jun 13 Python
Python如何实现守护进程的方法示例
Feb 08 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
Django 使用Ajax进行前后台交互的示例讲解
May 28 Python
pandas通过loc生成新的列方法
Nov 28 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
基于树莓派的语音对话机器人
Jun 17 Python
python rsa-oaep加密的示例代码
Sep 23 Python
python自动化发送邮件实例讲解
Jan 04 Python
pandas针对excel处理的实现
Jan 15 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 inc文件使用的风险和注意事项
2013/11/12 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP6新特性分析
2016/03/03 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
CI框架表单验证实例详解
2016/11/21 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
JS实现滑动插件
2020/01/15 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
Python入门篇之字典
2014/10/17 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
深入理解python对json的操作总结
2017/01/05 Python
破解安装Pycharm的方法
2018/10/19 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
在keras里实现自定义上采样层
2020/06/28 Python
python怎么自定义捕获错误
2020/06/29 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
班组安全员工作职责
2014/02/01 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
会计岗位职责
2015/02/03 职场文书
房屋维修申请报告
2015/05/18 职场文书
python四种出行路线规划的实现
2021/06/23 Python
MySQL七种JOIN类型小结
2021/10/24 MySQL