python實現TCP文件傳輸
更新時間:2020年03月20日 14:12:38 作者:Sunrise永不言棄
這篇文章主要為大家詳細介紹了python實現TCP文件傳輸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
前幾天已經講過了UDP協(xié)議下大文件傳輸的python實現代碼,今天再實現TCP協(xié)議下大文件傳輸的python實現代碼。
TCP和UDP的實現過程還是比較不一樣的。
實現代碼:
服務端:
import socket import time s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',9999)) s.listen(5) print('Waiting for connection...') while True: sock,addr = s.accept() print('Accept new connection from %s:%s...' % addr) if count == 0: data1 = sock.recv(1024) print(str(data1)) file_total_size = int(data1.decode()) received_size = 0 sock.send('received'.encode()) data = sock.recv(1024) filepath = str(data.decode()) f = open(filepath, 'wb') while received_size < file_total_size: data = sock.recv(1024) f.write(data) received_size += len(data) print('已接收 ',received_size,' Byte') data = sock.recv(1024) if data == b'end': break f.close() s.close()
客戶端:
import socket import os import time filename = input('please enter the filename you want to send:\n') filesize = str(os.path.getsize(filename)) fname1, fname2 = os.path.split(filename) client_addr = ('127.0.0.1',9999) f = open(filename,'rb') count = 0 flag = 1 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #建立連接: s.connect(('127.0.0.1', 9999)) while True: if count == 0: s.send(filesize.encode()) start = time.time() s.recv(1024) s.send(fname2.encode()) for line in f: s.send(line) print('sending...') s.send(b'end') break s.close end = time.time() print('cost' + str(round(end - start, 2)) + 's')
運行截圖:
服務器端:
客戶端:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強
這篇文章主要介紹了詳解利用python識別圖片中的條碼(pyzbar)及條碼圖片矯正和增強,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11python實現搜索指定目錄下文件及文件內搜索指定關鍵詞的方法
這篇文章主要介紹了python實現搜索指定目錄下文件及文件內搜索指定關鍵詞的方法,可實現針對文件夾及文件內關鍵詞的搜索功能,需要的朋友可以參考下2015-06-06python打包為linux可執(zhí)行文件的詳細圖文教程
這篇文章主要給大家介紹了關于python打包為linux可執(zhí)行文件的詳細圖文教程,本文介紹的方法可以輕松地將Python代碼變成獨立的可執(zhí)行文件,需要的朋友可以參考下2024-02-02