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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
Python模拟百度登录实例详解
Jan 20 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
python 图像平移和旋转的实例
Jan 10 Python
python多线程下信号处理程序示例
May 31 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
Django上线部署之IIS的配置方法
Aug 22 Python
Python 多线程,threading模块,创建子线程的两种方式示例
Sep 29 Python
python psutil监控进程实例
Dec 17 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
python 实现aes256加密
Nov 27 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 whois查询API制作方法
2011/06/23 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
javascript标签在页面中的位置探讨
2013/04/11 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
python WindowsError的错误代码详解
2017/07/23 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
Python内存读写操作示例
2018/07/18 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
我的祖国演讲稿
2014/05/04 职场文书
人大调研汇报材料
2014/08/14 职场文书
先进个人推荐材料
2014/12/29 职场文书
经费申请报告
2015/05/15 职场文书
边城读书笔记
2015/06/29 职场文书
小学思品教学反思
2016/02/20 职场文书