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实现异步回调机制代码分享
Jan 10 Python
Python中for循环详解
Jan 17 Python
使用Python脚本将Bing的每日图片作为桌面的教程
May 04 Python
深入理解python多进程编程
Jun 12 Python
python中安装模块包版本冲突问题的解决
May 02 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
python-itchat 获取微信群用户信息的实例
Feb 21 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
Python在OpenCV里实现极坐标变换功能
Sep 02 Python
python将print输出的信息保留到日志文件中
Sep 27 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
python 操作mysql数据中fetchone()和fetchall()方式
May 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
1 Tube Radio
2021/03/02 无线电
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
python实现最大优先队列
2019/08/29 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
高中生毕业自我鉴定范文
2013/12/22 职场文书
法律专业实习鉴定
2013/12/22 职场文书
就业自我评价
2014/02/04 职场文书
企业新年寄语
2014/04/04 职场文书
大一新生学期自我评价
2014/04/09 职场文书
运动会方阵口号
2014/06/07 职场文书
关爱残疾人标语
2014/06/25 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
单位租房协议书范本
2014/12/04 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
演讲比赛主持词
2015/06/29 职场文书
感恩父母主题班会
2015/08/12 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python