91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python3中使用tcp實現文件夾遠程傳輸

發布時間:2021-06-01 17:22:39 來源:億速云 閱讀:210 作者:Leah 欄目:開發技術

怎么在python3中使用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()

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

横峰县| 四平市| 绵阳市| 桐庐县| 宝丰县| 哈巴河县| 定日县| 肥城市| 隆化县| 遵义市| 岳普湖县| 济宁市| 武邑县| 汝阳县| 平山县| 文安县| 高雄市| 克山县| 拜泉县| 肇州县| 饶阳县| 玛多县| 江川县| 宁乡县| 徐汇区| 镇沅| 平利县| 蒲江县| 万安县| 唐海县| 株洲市| 乌鲁木齐市| 阿拉善左旗| 辽阳市| 商丘市| 丰镇市| 澄江县| 穆棱市| 安溪县| 全州县| 高邑县|