C#怎么开启FTP服务

时间:2021-07-29 03:44:59
想自己做一个FTP服务器,虽然网上有很多代码,但是很多都是一些类的代码,我也看不太懂,貌似他们都实现了文件上传、文件下载等等。
我就想实现下面这些基本功能,不知道需不需要实现他们的文件上传等等功能才能成功启动FTP。
C#怎么开启FTP服务
看了网上的代码,好像都没怎么讲到开启FTP的,很可能是我比较菜没有看到,请各位告诉我怎么开启FTP服务的?最重要的是可以设置自己的端口,因为我默认的21端口被占用了,还有那个请求的信息我也不知道怎么来的,希望不吝赐教哈。

14 个解决方案

#1



 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


楼上的是上传的功能吧,但是我想要的是怎么样开启服务的代码

#3


这个问题很难一两句回答你。
系统学习下,搞清楚2个问题:
tcp/ftp协议是怎么回事。
C#语言、类库,如何编译和运行代码。

#4


如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

#5


该回复于2010-08-09 15:58:22被版主删除

#6


安装好ftp 服务器后,在默认ftp站点上右键点击新建一个ftp 站点ip
网站主目录指你想发布文件的位置
server U

#7


引用 4 楼 caozhy 的回复:
如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

能给个网址我看看吗?类似这个的功能的就行了,或者包含这个的启动功能的也行

#8


学习一下

#9


引用 7 楼 qqlinhai 的回复:
引用 4 楼 caozhy 的回复:
如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

能给个网址我看看吗?类似这个的功能的就行了,或者包含这个的启动功能的也行


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=

#10


引用 9 楼 caozhy 的回复:
引用 7 楼 qqlinhai 的回复:
引用 4 楼 caozhy 的回复:
如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

能给个网址我看看吗?类似这个的功能的就行了,或者包含这个的启动功能的也行


http://www.google.com.hk/search?hl=zh-CN&source=hp&q=……
很多人,现在只是懂点即使皮毛,但是对于计算机内部知识还是掌握太少啊。。。

#11


我也是前些天刚接触,Windows 有FTP的API可以调用,无论打开关闭,上传下载。你要填参数FTP地址,用户名、密码、端口.

#12


要自己写FTP服务器必须深入理解TCP/IP及FTP协议,熟悉Socket编程...没有基础怎么说你都看不懂...

#13


没有,别说C#,任何语言的代码都不可能会有,这是收费的部分,不会免费提供。不过可以自己写,只不过你必须明白Socket的原理(也就是一应一答模式),遵循FTP协议,一个请求,一个答复,这样就可以设计FTP服务器了,不过你这又是何苦呢?有现成的FTP服务器软件可用,自己再写一个服务端软件难道有他们的好吗?

#14


楼主你好,我现在也是要实现你上面截图上面那些可配置的一些信息的这样一个上传功能,不知道是否可以将你的代码发一下给我参考一下,谢谢

#1



 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


楼上的是上传的功能吧,但是我想要的是怎么样开启服务的代码

#3


这个问题很难一两句回答你。
系统学习下,搞清楚2个问题:
tcp/ftp协议是怎么回事。
C#语言、类库,如何编译和运行代码。

#4


如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

#5


该回复于2010-08-09 15:58:22被版主删除

#6


安装好ftp 服务器后,在默认ftp站点上右键点击新建一个ftp 站点ip
网站主目录指你想发布文件的位置
server U

#7


引用 4 楼 caozhy 的回复:
如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

能给个网址我看看吗?类似这个的功能的就行了,或者包含这个的启动功能的也行

#8


学习一下

#9


引用 7 楼 qqlinhai 的回复:
引用 4 楼 caozhy 的回复:
如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

能给个网址我看看吗?类似这个的功能的就行了,或者包含这个的启动功能的也行


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=

#10


引用 9 楼 caozhy 的回复:
引用 7 楼 qqlinhai 的回复:
引用 4 楼 caozhy 的回复:
如果你什么都不知道,给你代码你一样看不懂。
如果你有点基础,手上的代码就足够了。ftp的代码很多的。

能给个网址我看看吗?类似这个的功能的就行了,或者包含这个的启动功能的也行


http://www.google.com.hk/search?hl=zh-CN&source=hp&q=……
很多人,现在只是懂点即使皮毛,但是对于计算机内部知识还是掌握太少啊。。。

#11


我也是前些天刚接触,Windows 有FTP的API可以调用,无论打开关闭,上传下载。你要填参数FTP地址,用户名、密码、端口.

#12


要自己写FTP服务器必须深入理解TCP/IP及FTP协议,熟悉Socket编程...没有基础怎么说你都看不懂...

#13


没有,别说C#,任何语言的代码都不可能会有,这是收费的部分,不会免费提供。不过可以自己写,只不过你必须明白Socket的原理(也就是一应一答模式),遵循FTP协议,一个请求,一个答复,这样就可以设计FTP服务器了,不过你这又是何苦呢?有现成的FTP服务器软件可用,自己再写一个服务端软件难道有他们的好吗?

#14


楼主你好,我现在也是要实现你上面截图上面那些可配置的一些信息的这样一个上传功能,不知道是否可以将你的代码发一下给我参考一下,谢谢