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

本文实例为大家分享了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()

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

(0)

相关推荐

  • python基于socket实现的UDP及TCP通讯功能示例

    本文实例讲述了python基于socket实现的UDP及TCP通讯功能.分享给大家供大家参考,具体如下: Server: import socket address = ('127.0.0.1', 31500) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind(address) while True: data, addr = s.recvfrom(2048) if not data: print "client has ex

  • Python3使用TCP编写一个简易的文件下载器功能

    利用Python3来实现TCP协议,和UDP类似.UDP应用于及时通信,而TCP协议用来传送文件.命令等操作,因为这些数据不允许丢失,否则会造成文件错误或命令混乱.下面代码就是模拟客户端通过命令行操作服务器.客户端输入命令,服务器执行并且返回结果. TCP(Transmission Control Protocol 传输控制协议):是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. 使用TCP编写一个简易的文件下载器要求:需编写文件下载器服务端和文件下载器客户

  • python使用socket实现的传输demo示例【基于TCP协议】

    本文实例讲述了python使用socket实现的传输demo.分享给大家供大家参考,具体如下: socket传输,客户端代码 import socket def main(): tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 服务器位于本机 9999 tcp_client_socket.connect( ("192.168.27.72", 9999) ) # 告诉服务器,我要下载哪一个文件

  • python3基于TCP实现CS架构文件传输

    本文实例为大家分享了python3实现CS架构文件传输的具体代码,供大家参考,具体内容如下 1.目标: 基于tcp实现CS架构的文件传输 指令列表:(1)get:从服务器端下载文件 (2)put:向服务器端上传文件 (3)list:获得服务器端的目录 2.socket模块函数: (1)send和sendall:send的作用是发送TCP数据,返回发送的数据大小.send函数不保证将所有数据全部发送,因此可能需要重复多次才能完成所有数据的发送.sendall的作用是发送完整的TCP数据,成功时返回

  • python使用tcp实现局域网内文件传输

    本文为大家分享了python使用tcp实现局域网内文件传输的具体代码,供大家参考,具体内容如下 功能: 可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件. 实现需求: 安装socket模块 简单了解sokcet模块用法 服务器代码如下: import socket def file_deal(file_name): # 定义函数用于处理用户索要下载的文件 try: # 二进制方式读取 files = open(file_name, "rb") mes = f

  • 对python中基于tcp协议的通信(数据传输)实例讲解

    阅读目录 tcp协议:流式协议(以数据流的形式通信传输).安全协议(收发信息都需收到确认信息才能完成收发,是一种双向通道的通信) tcp协议在OSI七层协议中属于传输层,它上承用户层的数据收发,下启网络层.数据链路层.物理层.可以说很多安全数据的传输通信都是基于tcp协议进行的. 为了让tcp通信更加方便需要引入一个socket模块(将网络层.数据链路层.物理层封装的模块),我们只要调用模块中的相关接口就能实现传输层下面的繁琐操作. 简单的tcp协议通信模板:(需要一个服务端和一个客户端) 服务

  • Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】

    本文实例讲述了Python 网络编程之TCP客户端/服务端功能.分享给大家供大家参考,具体如下: demo.py(TCP客户端): import socket def main(): # 1. 创建tcp的套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 链接服务器 # tcp_socket.connect(("192.168.33.11", 7890)) server_ip = input(

  • Python网络编程之使用TCP方式传输文件操作示例

    本文实例讲述了Python网络编程之使用TCP方式传输文件操作.分享给大家供大家参考,具体如下: TCP文件下载器 客户端 需求:输入要下载的文件名,从服务器端将文件拷贝到本地 步骤: 1.创建TCP套接字,绑定端口 2.连接服务端 3.输入要下载的文件名 4.将文件名编码,并发送到服务端 5.接收服务端返回的数据 6.关闭套接字 代码 # 导入模块 import socket # 创建套接字 tcp_client_socket = socket.socket(socket.AF_INET, s

  • python3.5基于TCP实现文件传输

    本文实例为大家分享了python3.5基于TCP实现文件传输的具体代码,供大家参考,具体内容如下 服务器代码 # _*_ coding:utf-8 _*_ from socket import * import _thread def tcplink(skt,addr): print(skt) print(addr,"已经连接上...") print('开始发送文件') with open('./ww.jpg', 'rb') as f: for data in f: print(dat

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

    本文实例为大家分享了python实现文件夹远程传输的具体代码,供大家参考,具体内容如下 实现功能: 通过tcp协议模拟文件夹的下载,注意是文件夹,不是文件. 下面让我们实现以下: 其中有部分功能还未实现有兴趣的可以将代码自行补全 服务器端代码: import os import socket import time # 定义全局列表用来存储子文件夹 list1 = [] def deal_file(files,dir_name,dir_socket): # 如果打开文件时报错即files为文件夹

  • Python 基于Twisted框架的文件夹网络传输源码

    由于文件夹可能有多层目录,因此需要对其进行递归遍历. 本文采取了简单的协议定制,定义了五条命令,指令Head如下: Sync:标识开始同步文件夹 End:标识结束同步 File:标识传输的文件名(相对路径) Folder:标志文件夹(相对路径) None:文件内容 每条命令以CMB_BEGIN开始,以CMB_END结束. 客户端需要对接收缓冲做解析,取出一条一条的指令,然后根据指令的Head做相应的处理,比如创建文件夹.写入文件等. 下面是服务端的代码: from twisted.interne

  • asp下利用fso实现文件夹或文件移动改名等操作函数

    asp利用fso实现文件的移动function movefiles(sFolder,dFolder)     on error resume next     dim fso     set fso = server.createobject("scripting.filesystemobject")     if fso.folderexists(server.mappath(sFolder)) and fso.folderexists(server.mappath(dFolder)

  • 利用Python对文件夹下图片数据进行批量改名的代码实例

    1. 前言 我们最近在做一个使用flask 模拟 instagram 的图片分享网站, 需要一些基本的图片数据, 我们这里采用的是本地提供, 但是,使用爬虫从网上爬下来的图片,名字都是乱七八糟的,不利于编程,这里就需要对他们进行批量改名操作. 2. 基本思路 使用python 的os 模块,对文件夹进行遍历(listdir), 同时使用rename 进行改名操作 3. 实现效果 4. 实现代码 代码非常简单 # -*- coding:utf8 -*- import os class BatchR

  • asp利用fso给文件夹和文件改名的代码

    <% Dim fso,f,folder     Set fso=Server.CreateObject("scripting.filesystemobject")     '改目录名     Set folder=fso.getfolder(Server.Mappath("Old"))     folder.name="New" '新名字 '改文件名     Set f=fso.getfile(Server.Mappath("Ol

  • 利用Python实现自动化监控文件夹完成服务部署

    目录 1. 准备 2. 实战一下 3. 总结 大家好,我是安果! 最近在部署前端项目的时候,需要先将前端项目压缩包通过堡垒机上传到应用服务器的 /tmp 目录下,然后进入应用服务器中,使用 mv 命令将压缩文件移动到 Nginx 项目设定目录,最后使用 unzip 命令解压文件,以此完成项目的部署 仔细分析,大部分操作都是重复性的动作,人工去完成这些操作会大大降低工作效率 本篇文章将介绍如何利用 Python 监控文件夹,以此辅助完成服务的部署动作 1. 准备 这里要介绍一个 Python 依赖

  • Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

    一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上传文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import sun.net

  • Python 读取指定文件夹下的所有图像方法

    (1)数据准备 数据集介绍: 数据集中存放的是1223幅图像,其中756个负样本(图像名称为0.1~0.756),458个正样本(图像名称为1.1~1.458),其中:"."前的标号为样本标签,"."后的标号为样本序号 (2)利用python读取文件夹中所有图像 ''' Load the image files form the folder input: imgDir: the direction of the folder imgName:the name of

  • linux 下python多线程递归复制文件夹及文件夹中的文件

    本文是利用python 复制文件夹 刚开始写了一个普通的递归复制文件夹    然后想了想 觉得对io频繁的程序 threading 线程还比较友好  就写了个多线程版本的  最恶心人的地方就是路径  其他都还好吧 import os import threading import multiprocessing length_of_folder = 0 def copyfile(Path): if os.path.isdir(Path): print("-----------%s" %

  • python实现遍历文件夹图片并重命名

    在做深度学习相关项目时,需要标注图片,筛选过后图片名字带有括号,显得比较乱,因此利用python进行统一规范重命名操作 实现方法是利用python的os模块对文件夹进行遍历(listdir),然后使用rename进行改名操作 代码如下 # -*- coding:utf8 -*- import os class BatchRename(): ''' 批量重命名文件夹中的图片文件 ''' def __init__(self): self.path = 'C:/Users/lenovo/Desktop

随机推荐