コード例 #1
0
ファイル: client_tcp.py プロジェクト: peleccom/050503_pitkin
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()
コード例 #2
0
ファイル: main.py プロジェクト: peleccom/050503_pitkin
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()
コード例 #3
0
ファイル: client_udp.py プロジェクト: peleccom/050503_pitkin
def get_file_from_server(host, port, filename, flag_overwrite=False):
    try:
        client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    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
        myDatagram = protocol.MyDatagram()
        server_filesize = myDatagram.send_request_blocking(client_socket,
                protocol.PROTOCOL_COMMAND_SIZE)
        if not server_filesize:
            return
        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
        try:
            bytes_received = fileutils.recv_file_udp(client_socket, f,
                server_filesize - seek_value, myDatagram,
                progress_callback=recv_progress_handler)
        finally:
            f.close()
        print("Bytes received %s" % bytes_received)
        if (bytes_received + seek_value) != server_filesize:
            print("!!Not all data received!!")
    except client.UdpClientError as e:
        print("Udp client error: %s" % e)
    except Exception as e:
        print("Client disconnected: %s" % e)
    finally:
        client_socket.close()