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之编写类之四再论继承
Oct 11 Python
Python实现获取某天是某个月中的第几周
Feb 11 Python
Python简单进程锁代码实例
Apr 27 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
python安装requests库的实例代码
Jun 25 Python
python中dict使用方法详解
Jul 17 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
python实现飞行棋游戏
Feb 05 Python
Python虚拟环境virtualenv是如何使用的
Jun 20 Python
详解Python requests模块
Jun 21 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获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 常用string函数详解
2016/05/30 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
Python计算IV值的示例讲解
2020/02/28 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
企业治理工作自我评价
2013/09/26 职场文书
3分钟演讲稿
2014/04/30 职场文书
简历自荐信范文
2015/03/09 职场文书
学雷锋活动简报
2015/07/20 职场文书
爱护公物主题班会
2015/08/17 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
如何有效防止sql注入的方法
2021/05/25 SQL Server
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL