每次建立ftp连接时,我都希望触发java程序。
我不确定如何检查FTP连接。有没有办法监控端口,以便我可以确认FTP何时获得新连接?
我研究了一下,发现FTPClient类基本上建议我需要自己做ftpclient,但我想知道是否还有其他方法。
即使是外部程序也可以选择。
答案 0 :(得分:0)
有多种方法:
让FTP服务本身启动java应用程序(听起来很昂贵)或通知正在运行的Java应用程序/服务。这将是最简单的方法......
使用某种外部监控; e.g。
通用数据包数据包嗅探工具(如wireshark
或tcpdump
)可能能够触发外部应用程序。如果没有,您可以将其记录到您扫描连接事件的文件中。
您可以使用jpcap实现一些在Java中进行自己的数据包嗅探
有一个名为tcpspy
的Linux实用程序可将TCP / IP连接详细信息记录到syslog中。您可以将其配置为特定文件并监视该文件,或者,您可以修改tcpspy
以直接启动或通知Java应用程序。
答案 1 :(得分:0)
它将在服务器端运行,基本上程序将读取客户端放在其上的文件。
考虑使用文件观察程序。看起来你并不真正关心文件是否使用FTP(事实上,将来它可能会通过其他方式实现),但只是文件存在且需要处理。
有关如何撰写的详细信息,请参阅Watching a Directory for Changes。
答案 2 :(得分:0)
我有一个程序,用java执行类似的服务器端任务。它检查文件夹中是否存在文件,如果是,则启动其余代码。像这样:
public static boolean needToConvert(){
//get list of companies
List<String> companies = getCompanyNames();
//check whether a file exists in folder of company
for(String company: companies){
if (new File(INPUT_LOCATION + company).list().length > 0){
return true;
}
}
return false;
}
这是一项相当昂贵的任务,因此您可以将服务器设置为&#34;检查&#34 ;;比如,每分钟左右。