Beispiel #1
0
def get_file_from_server(host, port, filename, flag_overwrite=False):
    global _sock
    try:
        client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error as e:
        print("Error creating client socket")
        return
    try:
        client_socket.connect((host, port))
    except socket.error as e:
        client_socket.close()
        print("error connecting to server: %s" % e)
        return
    _sock = client_socket
    signal.signal(signal.SIGURG, urgent_data_handler)
    fcntl.fcntl(client_socket.fileno(), fcntl.F_SETOWN, os.getpid())
    try:
        #get file size
        packed_size = connutils.recv_buffer(client_socket, 8)
        if len(packed_size) != 8:
            return
        #unpack long long format
        server_filesize = struct.unpack("!Q", packed_size)
        if not server_filesize:
            print("Error receiving filesize")
            return
        server_filesize = server_filesize[0]
        print("Server file size %s" % server_filesize)
        try:
            (f, seek_value) = client.create_client_file(filename,
                            server_filesize, flag_overwrite)
        except client.ClientError as e:
            print("Create file error: %s" % e)
            return

        packed_seek = struct.pack("!Q", seek_value)
        if not connutils.send_buffer(client_socket, packed_seek):
            f.close()
            return

        print("Receiving file...")
        bytes_received = fileutils.recv_file(client_socket, f, server_filesize
                - seek_value, progress_callback=recv_progress_handler)
        print("Bytes received %s" % bytes_received)
        if (bytes_received + seek_value) != server_filesize:
            print("!!Not all data received!!")
        f.close()
    except Exception as e:
        print("Client Disconnected: %s" % e)
    finally:
        signal.signal(signal.SIGURG, signal.SIG_DFL)
        client_socket.close()
Beispiel #2
0
def get_file_from_server(host, port, filename, flag_overwrite=False):
    try:
        client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error as e:
        print("Error creating client socket")
        return
    try:
        client_socket.connect((host, port))
    except socket.error as e:
        client_socket.close()
        print("error connecting to server: %s" % e)
        return
    try:
        #get file size
        packed_size = connutils.recv_buffer(client_socket, 8)
        if len(packed_size) != 8:
            return
        #unpack long long format
        server_filesize = struct.unpack("!Q", packed_size)
        if not server_filesize:
            print("Error receiving filesize")
            return
        server_filesize = server_filesize[0]
        print("Server file size %s" % server_filesize)
        seek_value = 0
        try:
            (f, seek_value) = client.create_client_file(filename,
                            server_filesize, flag_overwrite)
        except client.ClientError as e:
            print("Create file error: %s" % e)
            return
        packed_seek = struct.pack("!Q", seek_value)
        if not connutils.send_buffer(client_socket, packed_seek):
            f.close()
            return

        print("Receiving file...")
        bytes_received = fileutils.recv_file(client_socket, f, server_filesize)
        print("Bytes received %s" % bytes_received)
        if (bytes_received + seek_value) != server_filesize:
            print("!!Not all data received!!")
        f.close()
    except Exception as e:
        print(e)
    finally:
        client_socket.close()