外国人写的ftp服务器代码
发表于:2007-07-01来源:作者:点击数:
标签:
简介 这篇文章向您介绍了一个功能齐全的ftp 服务器 代码。它可以同时接受多个ftp连接(多线程)并具有大部分的一些商业ftp服务器的功能。服务器支持所有基本的ftp命令并提供给用户简单的管理接口,支持虚拟目录。 下面是对代码中重点类的描述: CFTPServer C
|
简介
这篇文章向您介绍了一个功能齐全的ftp服务器代码。它可以同时接受多个ftp连接(多线程)并具有大部分的一些商业ftp服务器的功能。服务器支持所有基本的ftp命令并提供给用户简单的管理接口,支持虚拟目录。
下面是对代码中重点类的描述:
CFTPServer
CFTPServer类是实际上的ftp服务器,它控制着所有其他的为服务器工作的类。尽管CFTPServer是一个基于对话框的程序,但是它并不依赖于UI,所以也可以用于一个服务程序或console程序。
CFTPEventSink
CFTPEventSink类用来“发送”CFTPServer类的事件给主程序,我使用了多继承和虚拟函数。CFTPEventSink类只是一个辅助类,只包括了一些虚拟函数。当你的类继承于CFTPEventSink类时,这些虚拟函数将代表一系列的事件。CFTPServer类需要发送消息通知主程序时,要调用这些函数。
怎样在你的程序中使用CFTPServer类:
1.在工程中加入类的文件。
2.你的主类要继承自CFTPEventSink
3.重载CFTPEventSink类的虚拟函数,这些函数将代表ftp服务器中发出的各个事件。
4.开始服务。
class CMyDlg : public CDialog, CFTPEventSink
{
...
CFTPServer m_FTPSERVER;
virtual void OnFTPUserConnected(DWORD nThreadID,
LPCTSTR lpszUser,
LPCSTR lpszAddress);
virtual void OnFTPUserDisconnected(DWORD nThreadID,
LPCTSTR lpszUser);
virtual void OnFTPStatusChange(int nType,
LPCTSTR lpszText);
virtual void OnFTPReceivedBytesChange(int nBytes);
virtual void OnFTPSentBytesChange(int nBytes);
virtual void OnFTPStatisticChange(int nType,
int nValue);
...
}
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
// initialize event sink
m_FTPSERVER.Initialize(this);
// set maximum users to 10
m_FTPSERVER.SetMaxUsers(10);
// aclearcase/" target="_blank" >ccept new connections on port 21
m_FTPSERVER.SetPort(21);
// activate server
m_FTPSERVER.Start();
return TRUE;
}
|
原文转自:http://www.ltesting.net