国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python3利用tcp實現文件夾遠程傳輸

2020-01-04 14:48:33
字體:
來源:轉載
供稿:網友

本文實例為大家分享了python實現文件夾遠程傳輸的具體代碼,供大家參考,具體內容如下

實現功能:

通過tcp協議模擬文件夾的下載,注意是文件夾,不是文件。

下面讓我們實現以下:

其中有部分功能還未實現有興趣的可以將代碼自行補全 

服務器端代碼:

import osimport socketimport 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():  # 待完善用于處理子文件夾,需要利用遞歸完成  passdef 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 socketimport osimport threadingimport timedef 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()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 峨眉山市| 通榆县| 横峰县| 文昌市| 昔阳县| 延长县| 徐汇区| 呼和浩特市| 灌南县| 桓仁| 永吉县| 湖南省| 荥经县| 元朗区| 永清县| 海淀区| 酒泉市| 洛川县| 京山县| 卓尼县| 肇庆市| 赞皇县| 斗六市| 桂东县| 会理县| 德江县| 翁牛特旗| 缙云县| 东安县| 阳山县| 黄山市| 淮安市| 怀来县| 墨玉县| 韩城市| 寻乌县| 工布江达县| 神农架林区| 巨野县| 呼伦贝尔市| 阿拉尔市|