用C#实现FTP搜索引擎


作者:Webmaster   来源:Linuxdby.com   点击:
1   日期:2007-06-04 [收藏] [投稿]
  IE是否经常中毒?推荐您 下载带有 Google 工具栏的 Firefox, 上网冲浪更惬意

晚辈最近用C#写了一个教育网FTP搜索引擎,希望能得到高手的指点。

网址:http:
//soso.ccnu.com.cn      http://it.ccnu.edu.cn/soso

部分代码:

using System;
using softplib;
using System.Threading;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Data;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace spider
{
 
/// <summary>
 
/// IndexClass 的摘要说明。
 
/// </summary>
 //编制索引类
 class IndexClass
 {
  
private IPAddress ip;
  
private string name;
  
private SqlProcedure sp;
  
public IndexClass(IPAddress _ip,string _name)
  {
   ip
=_ip;
   name
=_name;
  
  }

  
public void createIndex()
  {
   FTPFactory ff 
= new FTPFactory();
   ff.setDebug(
false);
   
string header="ftp://"+ip.ToString();
   
string address=name;
   
try
   {
    ff.setRemoteHost(ip.ToString());
    ff.login();
    Queue q
=new Queue();
    ArrayList fileNames
=ff.getFileList("*.*");
    ArrayList subdirNames
=ff.getSubdir("*",ref fileNames);
    
if(fileNames!=null && fileNames.Count>0)
     
foreach(string s in fileNames)
     {
     
      
try
      {
       Console.WriteLine(header
+"/"+s);
       
int h=-1;
       
long _size=0;
       
try
       {
        _size
=ff.getFileSize(s);
        h
=s.IndexOf("/");
       }
       
catch
       {
        _size
=0;
        Console.WriteLine(
"size error");
       }


       
if(s!=null && s.Trim()!="")
       {
        DataUnit datau
=new DataUnit(s,_size,header+"/",DateTime.Now,ip.ToString(),address);
        Class1.DataQueue.Enqueue(datau);
       }
      }
      
catch(Exception ex){Console.WriteLine(ex.Message);};
     }
    
if(subdirNames!=null && subdirNames.Count>0)
     
foreach(string s in subdirNames)
     {
      
if(s.Equals(".."|| s.Equals("."))continue;
      
if(s!=null && s.Trim()!="")
      {
       q.Enqueue(
"/"+s);
       DataUnit datau
=new DataUnit(s,(long)0,header+"/",DateTime.Now.AddHours(1),ip.ToString(),address);
       Class1.DataQueue.Enqueue(datau);
      }
     }
    
while(q.Count>0)
    {
     
string parent=q.Dequeue() as string;
     
//Console.WriteLine("change to "+parent.Trim());

     
try
     {
      ff.chdir(parent.Trim());
     
     }
     
catch
     {
      Console.WriteLine(parent.Trim());
      ff.setRemoteHost(ip.ToString());
      ff.login();
      Console.WriteLine(
"=======Continue========");
      
continue;
     }
     fileNames
=ff.getFileList("*.*");
     subdirNames
=ff.getSubdir("*",ref fileNames);
     
if(fileNames!=null && fileNames.Count>0)
      
foreach(string s in fileNames)
      {
     
       
try
       {
        Console.WriteLine(header
+parent+"/"+s);
        
long _size=0;
int h=-1;
        
try
        {
         _size
=ff.getFileSize(s);
         h
=s.IndexOf("/");
        }
        
catch
        {
         _size
=0;
         Console.WriteLine(
"size error");
        }
        
if(s!=null && s.Trim()!="")
        {
         DataUnit datau
=new DataUnit(s,_size,header+parent+"/",DateTime.Now,ip.ToString(),address);
         Class1.DataQueue.Enqueue(datau);
        }
       
       }
       
catch(Exception ex)
       {
        Console.WriteLine(ex.Message);
        ff.setRemoteHost(ip.ToString());
        ff.login();
        ff.chdir(parent.Trim());
        Console.WriteLine(
"=======Continue========");
        
continue;
       };
      }
     
if(subdirNames!=null && subdirNames.Count>0)
      
foreach(string s in subdirNames)
      {
       
if(s.Equals(".."|| s.Equals("."|| s.StartsWith("\0"))continue;
       
if(s!=null && s.Trim()!="")
       {
        q.Enqueue(parent
+"/"+s);     
        DataUnit datau
=new DataUnit(s,(long)0,header+parent+"/",DateTime.Now.AddHours(1),ip.ToString(),address);
        Class1.DataQueue.Enqueue(datau);
       }
      }
    }
  
    ff.close();
   }
   
catch(Exception ex)
   {
    Console.WriteLine(ex.Message);
   };
  }
 }
}


转载于:https://www.cnblogs.com/xpendif/archive/2007/06/06/774115.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值