阅读文章

使用C#实现的FTP Server(坚持不做标题党)

[日期:2008-04-17] 来源:  作者: [字体: ]

     授权方式:GPL V3
  版本:V2.1
  平台: .NET 2.0
  IDE: Visual Studio 2008
  (C)2008 Midapex
  
  下载地址如下:http://www.cnblogs.com/Files/dyj057/MidapexNetLibV2.1.rar
  
  该FTP Server是在网络库V2.1版本的基础上实现的。功能特点如下:
  1.100% C#代码实现。
  2.实现了大多数常用的FTP命令。
  3.支持断点续传功能。
  4.通过Mono实现跨平台特性。底层文件系统充分考虑了Ms-dos和Unix文件系统的差异,克服windows Ftp Client访问Linux FTP Server中文乱码的问题。
  5.二次开发功能,可以很容易的实现内嵌的FTP Server,实现文件的传输功能。
  6.完全开源,代码共享,不停更新,在线帮助问答。
  7.运行稳定,性能良好。
  8.支持限制用户连接数和限制上传文件大小功能。
  可以通过FTP Server的代码,详细了解到网络开发库的部分功能。
  
  下图是Ubuntu成功运行该程序的证据:
  http://www.cnblogs.com/images/cnblogs_com/dyj057/26088/o_Screenshot.png
  服务器的例子代码如下:
  
  
  class Program
   {
   static void Main(string[] args)
   {
   Trace.Listeners.Add(new ConsoleTraceListener());
  
   AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
   try
   {
   Console.WriteLine("********************************************************************");
   Console.WriteLine("Midapex Village FTP Server V2.1");
   Console.WriteLine("(C)2006-2008 Midapex Village");
   Console.WriteLine("********************************************************************");
   Console.WriteLine("");
  
   using (FtpServer server = new FtpServer())
   {
   Console.WriteLine("测试帐号:anonymous(匿名登陆,具有读权限), ftp(密码:ftp,具有读写权限)");
  
   /*
   * 服务器的最大连接数
   */
   server.Capacity = 1000;
  
   /*
   * 连接超时时间
   */
   server.HeartBeatPeriod = 120000; //120秒
  
   /*
   * 创建一个使用FTP的用户,
   */
   FtpUser user = new FtpUser("ftp");
   user.Password = "ftp";
   user.AllowWrite = true;
   user.HomeDir = Environment.CurrentDirectory;
  
   /*
   * 限制该帐号的用户的连接服务器的最大连接数
   * 也就是限制该使用该帐号的FTP同时连接服务器的数量。
   */
   user.MaxConnectionCount = 2;
  
   /*
   * 限制用户的最大上传文件为20M,超过这个值上传文件会失败。
   * 默认不限制该值,可以传输大文件。
   */
   user.MaxUploadFileLength = 1024 * 1024 * 20;
   server.AddUser(user);
  
   //把当前目录作为匿名用户的目录,测试目的(必须指定)
   server.AnonymousUser.HomeDir= Environment.CurrentDirectory;
  
   server.Start();
   Console.WriteLine("Press enter to exit");
   Console.ReadLine();
   server.Stop();
   }
   }
   catch (System.Exception e)
   {
   NetDebuger.PrintErrorMessage("FATAL ERROR:"+e.Message);
   }
  
   }
  
   static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
   {
   NetDebuger.PrintErrorMessage("UNHANDLED ERROR:"+e.ExceptionObject.ToString());
   }
   }  


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:还叫"初识复合控件"
下一篇:ASP.NET 2.0中XML数据的处理
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款