我有一个Java应用程序,该应用程序连接到另一台运行Filezilla FTP服务器的计算机。我注意到,经过一定数量的连接后,如果我关闭并尝试重新打开FTP客户端应用程序,我会开始挂在连接部分。我看到一个异常,显示“读取超时”,特别是指向ftpClient.setFileType(FTP.BINARY_FILE_TYPE);。当我注释掉该行时,它在下一行尝试通过FTP连接执行任何操作时失败,并显示相同的“ java.net.SocketTimeoutException:读取超时”。碰巧是ftpClient.makeDirectory()。
此后的任何通信功能只会向左和向右引发异常。
当我重新启动Filezilla服务器时,一切正常工作一段时间,直到问题再次出现。直到我重新启动服务器后,这种情况才会发生。
FTPClient ftpClient = null;
public boolean connect()
{
Connection conn = FileTransferUtility.conn;
if (conn != null)
{
try
{
ftpClient.connect(conn.getServer(),conn.getPort());
ftpClient.login(conn.getUser(), conn.getPw());
ftpClient.enterLocalPassiveMode();
ftpClient.setSoTimeout(5000);
ftpClient.setBufferSize(1024 * 1024);
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
return true;
}
else
{
return false;
}
}