用C#实现FTP搜索引擎

来源:互联网 发布:lol for mac 美服 编辑:程序博客网 时间:2024/05/17 02:17

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

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

部分代码:

  1using System;
  2using softplib;
  3using System.Threading;
  4using System.Collections;
  5using System.Net;
  6using System.Net.Sockets;
  7using System.IO;
  8using System.Data;
  9using System.Runtime.Serialization;
10using System.Runtime.Serialization.Formatters.Binary;
11namespace spider
12{
13 /// <summary>
14 /// IndexClass 的摘要说明。
15 /// </summary>

16 //编制索引类
17 class IndexClass
18 {
19  private IPAddress ip;
20  private string name;
21  private SqlProcedure sp;
22  public IndexClass(IPAddress _ip,string _name)
23  {
24   ip=_ip;
25   name=_name;
26  
27  }

28
29  public void createIndex()
30  {
31   FTPFactory ff = new FTPFactory();
32   ff.setDebug(false);
33   string header="ftp://"+ip.ToString();
34   string address=name;
35   try
36   {
37    ff.setRemoteHost(ip.ToString());
38    ff.login();
39    Queue q=new Queue();
40    ArrayList fileNames=ff.getFileList("*.*");
41    ArrayList subdirNames=ff.getSubdir("*",ref fileNames);
42    if(fileNames!=null && fileNames.Count>0)
43     foreach(string s in fileNames)
44     {
45     
46      try
47      {
48       Console.WriteLine(header+"/"+s);
49       int h=-1;
50       long _size=0;
51       try
52       {
53        _size=ff.getFileSize(s);
54        h=s.IndexOf("/");
55       }

56       catch
57       {
58        _size=0;
59        Console.WriteLine("size error");
60       }

61
62
63       if(s!=null && s.Trim()!="")
64       {
65        DataUnit datau=new DataUnit(s,_size,header+"/",DateTime.Now,ip.ToString(),address);
66        Class1.DataQueue.Enqueue(datau);
67       }

68      }

69      catch(Exception ex){Console.WriteLine(ex.Message);};
70     }

71    if(subdirNames!=null && subdirNames.Count>0)
72     foreach(string s in subdirNames)
73     {
74      if(s.Equals("..") || s.Equals("."))continue;
75      if(s!=null && s.Trim()!="")
76      {
77       q.Enqueue("/"+s);
78       DataUnit datau=new DataUnit(s,(long)0,header+"/",DateTime.Now.AddHours(1),ip.ToString(),address);
79       Class1.DataQueue.Enqueue(datau);
80      }

81     }

82    while(q.Count>0)
83    {
84     string parent=q.Dequeue() as string;
85     //Console.WriteLine("change to "+parent.Trim());
86
87     try
88     {
89      ff.chdir(parent.Trim());
90     
91     }

92     catch
93     {
94      Console.WriteLine(parent.Trim());
95      ff.setRemoteHost(ip.ToString());
96      ff.login();
97      Console.WriteLine("=======Continue========");
98      continue;
99     }

100     fileNames=ff.getFileList("*.*");
101     subdirNames=ff.getSubdir("*",ref fileNames);
102     if(fileNames!=null && fileNames.Count>0)
103      foreach(string s in fileNames)
104      {
105     
106       try
107       {
108        Console.WriteLine(header+parent+"/"+s);
109        long _size=0;
110        int h=-1;
111        try
112        {
113         _size=ff.getFileSize(s);
114         h=s.IndexOf("/");
115        }

116        catch
117        {
118         _size=0;
119         Console.WriteLine("size error");
120        }

121        if(s!=null && s.Trim()!="")
122        {
123         DataUnit datau=new DataUnit(s,_size,header+parent+"/",DateTime.Now,ip.ToString(),address);
124         Class1.DataQueue.Enqueue(datau);
125        }

126       
127       }

128       catch(Exception ex)
129       {
130        Console.WriteLine(ex.Message);
131        ff.setRemoteHost(ip.ToString());
132        ff.login();
133        ff.chdir(parent.Trim());
134        Console.WriteLine("=======Continue========");
135        continue;
136       }
;
137      }

138     if(subdirNames!=null && subdirNames.Count>0)
139      foreach(string s in subdirNames)
140      {
141       if(s.Equals("..") || s.Equals(".") || s.StartsWith("/0"))continue;
142       if(s!=null && s.Trim()!="")
143       {
144        q.Enqueue(parent+"/"+s);     
145        DataUnit datau=new DataUnit(s,(long)0,header+parent+"/",DateTime.Now.AddHours(1),ip.ToString(),address);
146        Class1.DataQueue.Enqueue(datau);
147       }

148      }

149    }

150  
151    ff.close();
152   }

153   catch(Exception ex)
154   {
155    Console.WriteLine(ex.Message);
156   }
;
157  }

158 }

159}

我用到过的一些资料,和部分代码。HTTP://www.hzu.net.cn/UpFile/20051213123921871.rar