Как инициировать двунаправленную передачу файлов между сервером и клиентом с помощью сокета Python для измерения скорости загрузки и выгрузки?
Я пишу код python, чтобы найти пропускную способность между сервером и клиентом. Она основана на speedtest.net функциональность, в которой я отправляю фиктивный файл для расчета скорости. Проблема, с которой я сталкиваюсь, - это однонаправленная пропускная способность. Как работать над передачей файлов с клиента на сервер и измерять скорость загрузки, а также одно и то же время? Я буду признателен Вам за ваши предложения по этому поводу. Вот код.
Server.py
import socket import os port = 60000 s = socket.socket() host = socket.gethostname() print host s.bind((host, port)) s.listen(5) print 'Server listening....' while True: conn, addr = s.accept() print 'Got connection from', addr data = conn.recv(1024) print('Server received', repr(data)) filename = 'ak.zip' b = os.path.getsize(filename) f = open(filename, 'rb') l = f.read(b) while (l): conn.send(l) l = f.read(b) f.close() print('Done sending') conn.send('Thank you for connecting') conn.close()
Client.py
import socket import time import os s = socket.socket() host = socket.gethostname() port = 60000 print host t1 = time.time() s.connect((host, port)) s.send("Hello server!") with open('received_file1', 'wb') as f: print 'file opened' t2 = time.time() while True: data = s.recv(1024) f.write(data) t3 = time.time() if not data: break d = os.path.getsize('received_file1') print data print d print 'Total:', t3 - t1 print 'Throughput:', round((d * 0.001) / (t3 - t1), 3), print 'K/sec.' f.close() print('Successfully received the file') s.close() print('connection closed')
Вывод на стороне клиента файл открыт
Итого: 0.0469999313354
Пропускная способность: 136213,986 к / сек.
Успешно получен файл
соединение закрыто
Что я уже пробовал:
Работали, чтобы найти пропускную способность в одном направлении, но не смогли сделать этого для другого направления (в то же время)
Richard MacCutchan
Для запуска теста загрузки вам потребуется отдельное соединение между клиентом и сервером. Но это будет очень неэффективно.
Member 14841130
возможность создания zip-папки на клиенте с таким же размером, но без файлов внутри zip-папки на клиенте. пожалуйста, предлагаем