授权方式:GPL V3
版本:V2.1
平台: .NET 2.0
IDE: Visual Studio 2008
(C)2008 Midapex
下载地址如下:https://files.cnblogs.com/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());
}
}
{
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());
}
}