想自己做一个FTP服务器,虽然网上有很多代码,但是很多都是一些类的代码,我也看不太懂,貌似他们都实现了文件上传、文件下载等等。
我就想实现下面这些基本功能,不知道需不需要实现他们的文件上传等等功能才能成功启动FTP。看了网上的代码,好像都没怎么讲到开启FTP的,很可能是我比较菜没有看到,请各位告诉我怎么开启FTP服务的?最重要的是可以设置自己的端口,因为我默认的21端口被占用了,还有那个请求的信息我也不知道怎么来的,希望不吝赐教哈。
我就想实现下面这些基本功能,不知道需不需要实现他们的文件上传等等功能才能成功启动FTP。看了网上的代码,好像都没怎么讲到开启FTP的,很可能是我比较菜没有看到,请各位告诉我怎么开启FTP服务的?最重要的是可以设置自己的端口,因为我默认的21端口被占用了,还有那个请求的信息我也不知道怎么来的,希望不吝赐教哈。
private void Upload(string filename)
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;
// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
// 默认为true,连接不会被关闭
// 在一个命令之后被执行
reqFTP.KeepAlive = false;
// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
// 指定数据传输类型
reqFTP.UseBinary = true;
// 上传文件时通知服务器文件的大小
reqFTP.ContentLength = fileInf.Length;
// 缓冲大小设置为2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
// 打开一个文件流 (System.IO.FileStream) 去读上传的文件
FileStream fs = fileInf.OpenRead();
try
{
// 把上传的文件写入流
Stream strm = reqFTP.GetRequestStream();
// 每次读文件流的2kb
contentLen = fs.Read(buff, 0, buffLength);
// 流内容没有结束
while (contentLen != 0)
{
// 把内容从file stream 写入 upload stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
// 关闭两个流
strm.Close();
fs.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Upload Error");
}
}
系统学习下,搞清楚2个问题:
tcp/ftp协议是怎么回事。
C#语言、类库,如何编译和运行代码。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。
网站主目录指你想发布文件的位置
server U
http://www.google.com.hk/search?hl=zh-CN&source=hp&q=ftp%E6%9C%8D%E5%8A%A1%E5%99%A8+c%23&aq=f&aqi=&aql=&oq=&gs_rfai=