meta = json.loads(self.__client.recv(102400)) self.__client.send(b'meta received!') size = meta['size'] name = meta['name'] buffer_size = meta['buffer_size'] if os.path.isdir(self.__save_path): path = os.path.join(self.__save_path, name) else: path = self.__save_path downloaded = 0 f = open(path, 'wb') while downloaded < size: data = self.__client.recv(buffer_size) n = f.write(data) downloaded += n print(f'{downloaded}/{size} downloaded.') f.close() if __name__ == '__main__': repo = Repository('/home/karl/Documents/file-sharing-system/repository') port = 11111 import sys if sys.argv[1] == 'host': host = FileHost(ip='127.0.0.1', port=port, repo_entry=repo.as_list()[0]) host.run() elif sys.argv[1] == 'client': client = FileClient(host_ip='127.0.0.1', host_port=port, save_path='..') client.run()