晚辈最近用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