源代在附件中,请高手看一下,指点指点
4 个解决方案
#1
下载不来……
#2
class MainApp
{
//定义一个表FTP服务器版本的常量
public const string Version = "0.0.1";
//这义一个静态字符串变量,表示FTP服务器初始化的默认路径
public static string szFtpRoot = @"E:\aspstudy";
public static bool fDebug = false;
public static void Usage()
{
Console.WriteLine("ftpd usage:");
Console.WriteLine();
//改变ftp目录
Console.WriteLine("-r [path]\t:\tSpecifies FTP Root");
//帮助
Console.WriteLine("-? \t:\tPrints this help");
return;
}
public static int Main(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
switch (args[i])
{
case "-r":
{
szFtpRoot = args[i + 1];
break;
}
case "-?":
{
Usage();
return 0;
}
default:
{
szFtpRoot = Directory.GetCurrentDirectory();
//@"E:\aspstudy"; // Directory.GetCurrentDirectory();
break;
}
}
}
//创建一个Ftpd对象实例
Ftpd pFtpd = new Ftpd();
//启动ftp服务
if (pFtpd.StartServer() == false)
{
Console.WriteLine("Failed to start FTP Server.");
return -1;
}
return 0;
}
}
{
//定义一个表FTP服务器版本的常量
public const string Version = "0.0.1";
//这义一个静态字符串变量,表示FTP服务器初始化的默认路径
public static string szFtpRoot = @"E:\aspstudy";
public static bool fDebug = false;
public static void Usage()
{
Console.WriteLine("ftpd usage:");
Console.WriteLine();
//改变ftp目录
Console.WriteLine("-r [path]\t:\tSpecifies FTP Root");
//帮助
Console.WriteLine("-? \t:\tPrints this help");
return;
}
public static int Main(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
switch (args[i])
{
case "-r":
{
szFtpRoot = args[i + 1];
break;
}
case "-?":
{
Usage();
return 0;
}
default:
{
szFtpRoot = Directory.GetCurrentDirectory();
//@"E:\aspstudy"; // Directory.GetCurrentDirectory();
break;
}
}
}
//创建一个Ftpd对象实例
Ftpd pFtpd = new Ftpd();
//启动ftp服务
if (pFtpd.StartServer() == false)
{
Console.WriteLine("Failed to start FTP Server.");
return -1;
}
return 0;
}
}
#3
public class SessionInfo
{
public bool fBinary = false;
public bool fPassive = false;
public String szFtpRoot = MainApp.szFtpRoot;
public String szUsername;
public PassiveInfo pi;
}
public struct PassiveInfo
{
//IPHostEntry类,属于System.Net名称空间,存储主机信息
public IPHostEntry iphostentry;
public TcpListener tcpListener;
//32位无符号数,描述端口
public Int32 iPort;
}
{
public bool fBinary = false;
public bool fPassive = false;
public String szFtpRoot = MainApp.szFtpRoot;
public String szUsername;
public PassiveInfo pi;
}
public struct PassiveInfo
{
//IPHostEntry类,属于System.Net名称空间,存储主机信息
public IPHostEntry iphostentry;
public TcpListener tcpListener;
//32位无符号数,描述端口
public Int32 iPort;
}
#4
public class Ftpd
{
//服务器接收一个客户请求后,产生的服务套接字
public Socket s;
public TcpListener TCPListener;
//属于System.Net名称空间,用IP地址和端口号表示一个网络终端
public IPEndPoint LocalIPEndPoint;
public IPEndPoint localEP;
public IPEndPoint remoteEP;
public Ftpd()
{
//实例化一个在端口21监听的TCPListener
TCPListener = new TcpListener(21);
}
//开始服务
public bool StartServer()
{
try
{
//开始监听
TCPListener.Start();
//循环
while (true)
{
//接收客户端的一个连接请求,返回一个套接字
s = TCPListener.AcceptSocket();
/* NOTE: Would be using System.Threading.ThreadPool(s) but they are not supported on 9x systems */
//创建一个线程,处理当前连接
Thread client = new Thread(new ThreadStart(ServeConnection));
//线程开始运行
client.Start();
}
}
catch (SocketException Se)
{
DBG_TRACE("An Socket Class Exception Has Occured");
DBG_TRACE("Error: {0}", Se.ErrorCode);
return false;
}
}
//:::
// Function:
// Reply()
//
// Purpose:
// Sends a status command back to the client, with a descriptive message.
//
// Parameters:
// Socket sSocket - Client's Connected Socket
// int iResponseCode - Response Code to Send
// String szMessage - Message to send
//:::
public void Reply(Socket sSocket, int iResponseCode, String szMessage)
{
try
{
String szResponse = "" + iResponseCode + " " + szMessage + "\r\n";
//将字符串转换成ASCII码
Byte[] OutputBytes = GetBytes(szResponse);
//通过套接字发送
sSocket.Send(OutputBytes);
}
catch (Exception)
{
}
return;
}
{
//服务器接收一个客户请求后,产生的服务套接字
public Socket s;
public TcpListener TCPListener;
//属于System.Net名称空间,用IP地址和端口号表示一个网络终端
public IPEndPoint LocalIPEndPoint;
public IPEndPoint localEP;
public IPEndPoint remoteEP;
public Ftpd()
{
//实例化一个在端口21监听的TCPListener
TCPListener = new TcpListener(21);
}
//开始服务
public bool StartServer()
{
try
{
//开始监听
TCPListener.Start();
//循环
while (true)
{
//接收客户端的一个连接请求,返回一个套接字
s = TCPListener.AcceptSocket();
/* NOTE: Would be using System.Threading.ThreadPool(s) but they are not supported on 9x systems */
//创建一个线程,处理当前连接
Thread client = new Thread(new ThreadStart(ServeConnection));
//线程开始运行
client.Start();
}
}
catch (SocketException Se)
{
DBG_TRACE("An Socket Class Exception Has Occured");
DBG_TRACE("Error: {0}", Se.ErrorCode);
return false;
}
}
//:::
// Function:
// Reply()
//
// Purpose:
// Sends a status command back to the client, with a descriptive message.
//
// Parameters:
// Socket sSocket - Client's Connected Socket
// int iResponseCode - Response Code to Send
// String szMessage - Message to send
//:::
public void Reply(Socket sSocket, int iResponseCode, String szMessage)
{
try
{
String szResponse = "" + iResponseCode + " " + szMessage + "\r\n";
//将字符串转换成ASCII码
Byte[] OutputBytes = GetBytes(szResponse);
//通过套接字发送
sSocket.Send(OutputBytes);
}
catch (Exception)
{
}
return;
}
#1
下载不来……
#2
class MainApp
{
//定义一个表FTP服务器版本的常量
public const string Version = "0.0.1";
//这义一个静态字符串变量,表示FTP服务器初始化的默认路径
public static string szFtpRoot = @"E:\aspstudy";
public static bool fDebug = false;
public static void Usage()
{
Console.WriteLine("ftpd usage:");
Console.WriteLine();
//改变ftp目录
Console.WriteLine("-r [path]\t:\tSpecifies FTP Root");
//帮助
Console.WriteLine("-? \t:\tPrints this help");
return;
}
public static int Main(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
switch (args[i])
{
case "-r":
{
szFtpRoot = args[i + 1];
break;
}
case "-?":
{
Usage();
return 0;
}
default:
{
szFtpRoot = Directory.GetCurrentDirectory();
//@"E:\aspstudy"; // Directory.GetCurrentDirectory();
break;
}
}
}
//创建一个Ftpd对象实例
Ftpd pFtpd = new Ftpd();
//启动ftp服务
if (pFtpd.StartServer() == false)
{
Console.WriteLine("Failed to start FTP Server.");
return -1;
}
return 0;
}
}
{
//定义一个表FTP服务器版本的常量
public const string Version = "0.0.1";
//这义一个静态字符串变量,表示FTP服务器初始化的默认路径
public static string szFtpRoot = @"E:\aspstudy";
public static bool fDebug = false;
public static void Usage()
{
Console.WriteLine("ftpd usage:");
Console.WriteLine();
//改变ftp目录
Console.WriteLine("-r [path]\t:\tSpecifies FTP Root");
//帮助
Console.WriteLine("-? \t:\tPrints this help");
return;
}
public static int Main(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
switch (args[i])
{
case "-r":
{
szFtpRoot = args[i + 1];
break;
}
case "-?":
{
Usage();
return 0;
}
default:
{
szFtpRoot = Directory.GetCurrentDirectory();
//@"E:\aspstudy"; // Directory.GetCurrentDirectory();
break;
}
}
}
//创建一个Ftpd对象实例
Ftpd pFtpd = new Ftpd();
//启动ftp服务
if (pFtpd.StartServer() == false)
{
Console.WriteLine("Failed to start FTP Server.");
return -1;
}
return 0;
}
}
#3
public class SessionInfo
{
public bool fBinary = false;
public bool fPassive = false;
public String szFtpRoot = MainApp.szFtpRoot;
public String szUsername;
public PassiveInfo pi;
}
public struct PassiveInfo
{
//IPHostEntry类,属于System.Net名称空间,存储主机信息
public IPHostEntry iphostentry;
public TcpListener tcpListener;
//32位无符号数,描述端口
public Int32 iPort;
}
{
public bool fBinary = false;
public bool fPassive = false;
public String szFtpRoot = MainApp.szFtpRoot;
public String szUsername;
public PassiveInfo pi;
}
public struct PassiveInfo
{
//IPHostEntry类,属于System.Net名称空间,存储主机信息
public IPHostEntry iphostentry;
public TcpListener tcpListener;
//32位无符号数,描述端口
public Int32 iPort;
}
#4
public class Ftpd
{
//服务器接收一个客户请求后,产生的服务套接字
public Socket s;
public TcpListener TCPListener;
//属于System.Net名称空间,用IP地址和端口号表示一个网络终端
public IPEndPoint LocalIPEndPoint;
public IPEndPoint localEP;
public IPEndPoint remoteEP;
public Ftpd()
{
//实例化一个在端口21监听的TCPListener
TCPListener = new TcpListener(21);
}
//开始服务
public bool StartServer()
{
try
{
//开始监听
TCPListener.Start();
//循环
while (true)
{
//接收客户端的一个连接请求,返回一个套接字
s = TCPListener.AcceptSocket();
/* NOTE: Would be using System.Threading.ThreadPool(s) but they are not supported on 9x systems */
//创建一个线程,处理当前连接
Thread client = new Thread(new ThreadStart(ServeConnection));
//线程开始运行
client.Start();
}
}
catch (SocketException Se)
{
DBG_TRACE("An Socket Class Exception Has Occured");
DBG_TRACE("Error: {0}", Se.ErrorCode);
return false;
}
}
//:::
// Function:
// Reply()
//
// Purpose:
// Sends a status command back to the client, with a descriptive message.
//
// Parameters:
// Socket sSocket - Client's Connected Socket
// int iResponseCode - Response Code to Send
// String szMessage - Message to send
//:::
public void Reply(Socket sSocket, int iResponseCode, String szMessage)
{
try
{
String szResponse = "" + iResponseCode + " " + szMessage + "\r\n";
//将字符串转换成ASCII码
Byte[] OutputBytes = GetBytes(szResponse);
//通过套接字发送
sSocket.Send(OutputBytes);
}
catch (Exception)
{
}
return;
}
{
//服务器接收一个客户请求后,产生的服务套接字
public Socket s;
public TcpListener TCPListener;
//属于System.Net名称空间,用IP地址和端口号表示一个网络终端
public IPEndPoint LocalIPEndPoint;
public IPEndPoint localEP;
public IPEndPoint remoteEP;
public Ftpd()
{
//实例化一个在端口21监听的TCPListener
TCPListener = new TcpListener(21);
}
//开始服务
public bool StartServer()
{
try
{
//开始监听
TCPListener.Start();
//循环
while (true)
{
//接收客户端的一个连接请求,返回一个套接字
s = TCPListener.AcceptSocket();
/* NOTE: Would be using System.Threading.ThreadPool(s) but they are not supported on 9x systems */
//创建一个线程,处理当前连接
Thread client = new Thread(new ThreadStart(ServeConnection));
//线程开始运行
client.Start();
}
}
catch (SocketException Se)
{
DBG_TRACE("An Socket Class Exception Has Occured");
DBG_TRACE("Error: {0}", Se.ErrorCode);
return false;
}
}
//:::
// Function:
// Reply()
//
// Purpose:
// Sends a status command back to the client, with a descriptive message.
//
// Parameters:
// Socket sSocket - Client's Connected Socket
// int iResponseCode - Response Code to Send
// String szMessage - Message to send
//:::
public void Reply(Socket sSocket, int iResponseCode, String szMessage)
{
try
{
String szResponse = "" + iResponseCode + " " + szMessage + "\r\n";
//将字符串转换成ASCII码
Byte[] OutputBytes = GetBytes(szResponse);
//通过套接字发送
sSocket.Send(OutputBytes);
}
catch (Exception)
{
}
return;
}