我是Delphi新手,想做一个搜索ftp站点的小软件,请高手指教。

解决方案 »

  1.   

    呵呵
    挺麻烦的_____________________
    http://lysoft.7u7.net
      

  2.   

    哈哈,可能是我没有把问题说清楚。我的意思是这样的:
    比如有一段IP: 192.168.45.1 - 192.168.45.255,
    用程序检测一下有哪些开了FTP服务,
    用D7就可以了,因为IdTcpClient的connect方法有timeout参数可以设置;
    但如果D6不可以设置超时时间,所以非常慢。
    所以请问高手最快的方法是什么呢,最好可以用D6来实现。
      

  3.   

    就是检查这些ip地址的21号端口啊,如果21号端口开了,那说明开了ftp服务了。只能这样!
      

  4.   

    我是新菜鸟,请楼上的大侠说详细一点,怎样检查IP地址的端口,
    是用IdTcpClient的Connect方法吗?
    有没有Windows API函数可以实现,如果可以速度应该很快吧。
      

  5.   

    开多几个线程在网段内一个个的connect 吧
      

  6.   

    我试过用多线程了,但是有两个问题不明白:
    1)我明明只开了20条线程,但在任务管理器里发现开了41条,有时甚至是五十多。
    2)有时速度很快,开20条线程时(连接超时为200ms),搜索255个IP大概用2.8秒,但有时会卡住不动。特别是开到50条线程时经常会停住,但查看CPU使用率并没问题。为什么会这样,请高手多多指点。
      

  7.   

    1)我明明只开了20条线程,但在任务管理器里发现开了41条,有时甚至是五十多。你是对每个IP都创建线程还是固定线程数,是不是线程搜完了没有释放2)有时速度很快,开20条线程时(连接超时为200ms),搜索255个IP大概用2.8秒
    有这么快吗?
      

  8.   

    第一个问题我有点明白了,应该是因为我在每条线程中创建一个TIdTcpClient实例,而TIdTcpClient实例可能也自动创建了一条线程,这样就有两倍的线程了,再加上一条主线程,刚好是41条。而有时会出现50多条,可能是因为上一次的线程还没有全部结束,我又开始下一次搜索而造成线程积累。“开20条线程时(连接超时为200ms),搜索255个IP大概用2.8秒”,这个是真的,我试过几次了,但要注意不要做太多打印显示方面的工作,因为这是很费时的。但还是要请教高手,怎样直接用API函数来检测端口,这样就不用浪费两倍的线程了,相信速度会更快。期待高手的回复……
      

  9.   

    21端口未必就是FTP!
    需要220的Welcome信息,才能确定是FTP协议_____________________
    http://lysoft.7u7.net
      

  10.   

    那用IdFtpClient连接上的应该是FTP协议了吧.