I open a connection to an FTP server at the start of my program.
Before I perform operations on the server I want to check if the connection was successfully established. The easiest fast manner so if the connection is gone, I will try to connect again.
I used this code to do this:
private boolean checkConnection()
{
try
{
boolean success = ftpClient.login(user_name, password);
if(success)
return true;
else
return false;
}
}
But this method throws a NullPointer exception when the connection was closed.
I can check the connection with the ftpClient.connect(server, port);
but that is like attampting to connect all over again.
What is the bes way to check the connection?
Trying to send a simple sendNoOp()
and checking the reply might be a good way to lightly check the connecion:
private boolean checkConnectionWithOneRetry()
{
try
{
// Sends a NOOP command to the FTP server.
boolean answer = ftpClient.sendNoOp();
if(answer)
return true;
else
{
System.out.println("Server connection failed!");
boolean success = reconnect();
if(success)
{
System.out.println("Reconnect attampt have succeeded!");
return true;
}
else
{
System.out.println("Reconnect attampt failed!");
return false;
}
}
}
catch (FTPConnectionClosedException e)
{
System.out.println("Server connection is closed!");
boolean recon = reconnect();
if(recon)
{
System.out.println("Reconnect attampt have succeeded!");
return true;
}
else
{
System.out.println("Reconnect attampt have failed!");
return false;
}
}
catch (IOException e)
{
System.out.println("Server connection failed!");
boolean recon = reconnect();
if(recon)
{
System.out.println("Reconnect attampt have succeeded!");
return true;
}
else
{
System.out.println("Reconnect attampt have failed!");
return false;
}
}
catch (NullPointerException e)
{
System.out.println("Server connection is closed!");
boolean recon = reconnect();
if(recon)
{
System.out.println("Reconnect attampt have succeeded!");
return true;
}
else
{
System.out.println("Reconnect attampt have failed!");
return false;
}
}
}