正确检查FTP服务器连接

我在程序开始时打开了与FTP服务器的连接。

在我在服务器上执行操作之前,我想检查连接是否已成功建立。 最简单的快速方式,如果连接消失,我将尝试再次连接。

我使用此代码执行此操作:

private boolean checkConnection() { try { boolean success = ftpClient.login(user_name, password); if(success) return true; else return false; } } 

但是,此方法在连接关闭时抛出NullPointerexception。

我可以检查与ftpClient.connect(server, port); 但这就像试图重新连接一样。

有什么方法可以检查连接?

尝试发送一个简单的sendNoOp()并检查回复可能是一个轻松检查连接的好方法:

 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; } } } 
 private FTPClient ftp = null; private void connect() { ftp = new FTPClient(); try { ftp.connect("Server",port); boolean login = ftp.login("username", "password"); System.out.println(" login "+ login ); } catch (FTPConnectionClosedException e) { System.err.println("ERROR :: FTP Server Unreachable"); sleep(); connect(); } catch (SocketException e) { System.err.println("ERROR :: FTP Server Unreachable"); sleep(); connect(); } catch (IOException e) { System.err.println("ERROR :: FTP Server Unreachable"); sleep(); connect(); } } public void sleep(){ try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } }