监视FTP服务器,如果有文件UPLOAD,程序响应,检查该文件,并对该文件进行处理。(100分)

  • 主题发起人 主题发起人 Mr-cure
  • 开始时间 开始时间
M

Mr-cure

Unregistered / Unconfirmed
GUEST, unregistred user!
我最近做个程序,其中有一部分需要实时监测FTP服务器,发现有用户
UPLOAD文件过来,程序立即响应,并对该文件进行处理,比如把UPLOAD的
文件型数据库倒到SQL SERVER数据库中。

请问有什么好的解决方法么?
或者我自己做个FTP服务器?有这样的控件么?
急!
谢谢!
 
用ICS套件,里面有一个专门的FTP server控件.
 
ICS套件里面的FTP server控件一定要注意写够事件,
否则你硬盘上所有文件都会给人用anonymous搞丁
 
mr-cure的问题不是自己编ftp server ,而是如何检视现成的ftp server ,如 ms
的 iis2.0中的ftp server .不如循环判断文件是否存在吧!
 
用timer隔一段时间看一次
 
win1998的说得很对,最好是监测现成的FTP服务器,用TIMER观察也太费劲了吧?
最好是比如监测PORT 21什么的。有连接或者文件上传就有消息响应,诸如此类。

实在不行也就只好自己做FTP SERVER了。

ICS套件在哪儿有下载?
 
ICS套件已经找到。
我还是希望最好能直接监测现成的FTP服务器。
 
监视你的ftp存放的目录

var
h:THandle;
begin
h:=FindFirstChangeNotification('c:/temp/cb',true,FILE_NOTIFY_CHANGE_SIZE or FILE_NOTIFY_CHANGE_LAST_WRITE or FILE_NOTIFY_CHANGE_FILE_NAME);
if(h=INVALID_HANDLE_VALUE)then
RaiseLastWin32Error();
while(true)do
begin
WaitForSingleObject(h,INFINITE); //如果没有改变
//这里会等很久,不处理消息 //所以推荐在子线程进行
//在这里检查是否符合你的要求,如果
//符合要求就 break 跳出循环
FindNextChangeNotification(h);
end;
 
我也正在做这个程序,我做的程序一部分和Pipi 老兄使用的方法一样
但是这个方法有个非常大的问题:即当改目录发生了文件的写,修改
等操作跳出循环以后,无法获得更新文件的句柄,也就无法做后续操
作了,我现在的处理办法依然是做遍历操作,但是这样实在损失效率

请问有没有办法获得最新更新的文件句柄呢,我也很急!
如果那位愿意讨论的话,请与我联系:oicq:2352012

email:2bao@263.net
 
顺便在问一句,ICS那里能够找到????
 
ics:
http://www.rtfm.be/fpiette/indexuk.htm
 
我建议还是自己写FTP Server吧,ICS的Demo里有比较详细的介绍。
可以写成多线程方式处理客户请求,效率很高。
 
多人接受答案了。
 
应该用钩子函数。那样的效率最高。
 
后退
顶部