您的位置:首頁技術文章
文章詳情頁

python實現TCP文件傳輸

瀏覽:5日期:2022-08-01 17:38:43

前幾天已經講過了UDP協議下大文件傳輸的python實現代碼,今天再實現TCP協議下大文件傳輸的python實現代碼。TCP和UDP的實現過程還是比較不一樣的。

實現代碼:

服務端:

import socketimport times = 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 socketimport osimport timefilename = 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 = 0flag = 1s = 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’) breaks.closeend = time.time()print(’cost’ + str(round(end - start, 2)) + ’s’)

運行截圖:

服務器端:

python實現TCP文件傳輸

客戶端:

python實現TCP文件傳輸

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

標簽: Python 編程
相關文章:
国产综合久久一区二区三区