예제 #1
0
        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()