1. 网络模型初探
FTP 服务器会监听指定的 21 端口,等待用户连接,这是所谓的控制连接。当需要数据传输时,客户端和服务器之间会再建立一个数据连接。
本期文章暂不涉及 FTP 协议的处理过程,重点在于梳理 FileZilla Server 的网络模型。
接上一期,FTP 服务器初始化线程代码。该线程创建了 CServer 类,执行流程来到 CServer::Create 函数(节选):
bool CServer::Create()
{
//Create window
RegisterClassEx(&wndclass);
m_hWnd = CreateWindow(_T("FileZilla Server Helper Window"), _T("FileZilla Server Helper Window"), 0, 0, 0, 0, 0, 0, 0, 0, GetModuleHandle(0));
if (!m_hWnd)
return false;
SetWindowLongPtr(m_hWnd, GWLP_USERDATA, (LONG)this);
hMainWnd = m_hWnd;
//ListenSocket
if (CreateListenSocket()) {
m_nServerState = STATE_ONLINE;
ShowStatus(_T("Server online."), 0);
}
else
ShowStatus(_T("Server not online."), 1);