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()
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()
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()