python3利用tcp实现文件夹远程传输


Posted in Python onJuly 28, 2018

本文实例为大家分享了python实现文件夹远程传输的具体代码,供大家参考,具体内容如下

实现功能:

通过tcp协议模拟文件夹的下载,注意是文件夹,不是文件。

下面让我们实现以下:

其中有部分功能还未实现有兴趣的可以将代码自行补全

服务器端代码:

import os
import socket
import time
# 定义全局列表用来存储子文件夹
list1 = []


def deal_file(files,dir_name,dir_socket):
  # 如果打开文件时报错即files为文件夹
  try:
    old_file = open(os.path.join(dir_name.decode(),files),"rb")
  except:
    # 讲导致报错的文件夹放入全局列表等待处理
    global list1
    list1.append(files)
  else:
    # 没有报错则执行读取发送关闭文件
    file_data = old_file.read()
    print("发送内容")
    dir_socket.send(file_data)

    old_file.close()

def deal_dir():
  # 待完善用于处理子文件夹,需要利用递归完成
  pass


def main():
  # 创建套接字
  tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 固定端口号
  tcp_socket.bind(("",9992))
  # 被动套接字转换为主动套接字
  tcp_socket.listen(128)
  # 将队列中的客户端取出
  dir_socket,client_ip = tcp_socket.accept()
  # 接受客户端消息
  dir_name = dir_socket.recv(1024)
  # 显示文件列表
  file_list = os.listdir(dir_name.decode())
  # 将文件列表发送至客户端
  dir_socket.send(str(file_list).encode())
  # 阻塞0.5s等待发送成功
  time.sleep(0.5)
  # 便利每个文件发送文件内容
  for files in file_list:
    deal_file(files, dir_name, dir_socket)
  global list1
  # 如果全局列表内有文件则
  if list1:
    # 带完善
    pass

  else:


    dir_socket.close()

    print("文件全部传输完成")
    tcp_socket.close()



if __name__ == '__main__':
  main()

客户端源码:

import socket
import os
import threading
import time


def recv_data(files,dir_name,tcp_socket):
  file_data = tcp_socket.recv(1024)
  new_file = open(os.path.join(dir_name+"新", files),"wb")

  new_file.write(file_data)
  new_file.close()
  print("文件%s下载完成" % files)
def main():
  # 创建套接字
  tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 连接服务器
  tcp_socket.connect(("192.168.11.128", 9992))

  # 向服务器发送要拷贝的文件夹
  dir_name = input("请输入要拷贝的文件夹")
  tcp_socket.send(dir_name.encode())
  # 新建文件夹
  os.mkdir(dir_name+"新")
  # 接受文件列表,循环打开文件写入
  file_list = tcp_socket.recv(1024)
  a = eval(file_list)
  print(a)
  for files in eval(file_list.decode()):
    recv_data(files,dir_name,tcp_socket)


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
初学Python实用技巧两则
Aug 29 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
python numpy 显示图像阵列的实例
Jul 02 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
详解python中各种文件打开模式
Jan 19 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 Python
python使用tornado实现简单爬虫
Jul 28 #Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 #Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 #Python
Python Socket编程之多线程聊天室
Jul 28 #Python
python实现点对点聊天程序
Jul 28 #Python
基于python实现聊天室程序
Jul 27 #Python
Python中return self的用法详解
Jul 27 #Python
You might like
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
JSON格式化输出
2014/11/10 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
应聘美工求职信
2013/11/07 职场文书
人事部专员岗位职责
2014/03/04 职场文书
销售代理协议书
2014/09/30 职场文书
教师节标语大全
2014/10/07 职场文书
通知书大全
2015/04/27 职场文书
初中化学教学反思
2016/02/22 职场文书