私はFTPClientを使用しており、タイマーで30秒ごとにファイルをFTPサーバーに送信しています。興味深いことに、2回のアップロードが成功した後、接続タイムアウトエラーが発生し、3回目のアップロードは発生せず、次のようなエラーが発生します。
java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:171)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:192)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:285)
at com.xxxxx.PDF2VS.send2FTP(PDF2VS.java:87)
at com.xxxxx.PDF2VS$1.run(PDF2VS.java:35)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
ファイルを送信するために見つけたコードは次のとおりです。
public static boolean send2FTP ()
{
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
//read from the
Properties prop = new Properties();
InputStream in = PDF2VS.class.getResourceAsStream("/config.properties");
prop.load(in);
client.setControlKeepAliveTimeout(300);
client.connect(prop.getProperty("FTP_ADDRESS"));
client.login(prop.getProperty("UNAME"), prop.getProperty("PWD"));
System.out.print("Message : " + client.getReplyString());
client.setDefaultPort(Integer.parseInt(prop.getProperty("PORT")));
int f1 = client.getDefaultPort();
client.setFileType(FTPClient.BINARY_FILE_TYPE);
System.out.println("File transfer port no " + f1);
System.out.println("FTP server reply ." + client.getReplyString());
String localfile = prop.getProperty("LOCAL_FILE");
fis = new FileInputStream(localfile);
int lastSlash = localfile.lastIndexOf('/');
String filename = localfile.substring(lastSlash+1);
System.out.println("Uploading: " + filename);
System.out.println("file : "+fis);
client.setFileTransferMode(2);
System.out.println("Flag reply ." + client.getReplyString());
boolean flag = client.storeFile(filename,fis);
System.out.println("Flag reply ." + client.getReplyString());
if (flag) {
System.out.println("Successfully uploaded the file");
} else {
System.out.println("Not able to upload the file");
}
fis.close();
client.logout();
System.out.println("Logout ." + client.getReplyString());
in.close();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (client.isConnected()) {
try {
client.disconnect();
System.out.println("Server Disconnected." + client.getReplyString());
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
return true;
}
それは 2 回動作し、エラーを受け取ります。何が間違っていますか?