晚辈最近用C#写了一个教育网FTP搜索引擎,希望能得到高手的指点。
网址:http://soso.ccnu.com.cn http://it.ccnu.edu.cn/soso
部分代码:
1
using System;
2
using softplib;
3
using System.Threading;
4
using System.Collections;
5
using System.Net;
6
using System.Net.Sockets;
7
using System.IO;
8
using System.Data;
9
using System.Runtime.Serialization;
10
using System.Runtime.Serialization.Formatters.Binary;
11
namespace 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
博主用C#编写了教育网FTP搜索引擎,给出了搜索引擎的网址,还展示了部分代码,包括编制索引类的代码,涉及IP地址、文件名处理、文件大小获取等操作,同时也给出了用到的一些资料链接。

1万+

被折叠的 条评论
为什么被折叠?



