MFC Web服务器
浏览器 = Socket程序 + http协议
服务器界面设计:并为控件添加变量
变量 | Control | Value |
---|---|---|
"服务器"IP地址控件 | LocalIP | _ |
"端口"文本框 | localPort | m_nPort(UINT) |
"根目录"文本框 | rootdir | m_strRootDir(CString) |
"开启"按钮 | m_StartStop | _ |
服务器状态列表控件 | m_StatList | _ |
"退出"按钮 | m_exit | _ |
Web服务器界面总控
1.为开始按钮添加事件处理:并为类CWebServerDlg添加类成员变量m_bStart,成员函数StartWebServer()和StopWebServer()。
2.在初始化对话框BOOL CWebServerDlg::OnInitDialog()里添加如下代码:
m_bStart = false;
localPort.SetWindowText("");
3.“开启”事件处理代码:
UpdateData();
if (!m_bStart)
{
//StartWebServer();
m_start.SetWindowTextA("关闭");
LocalIP.EnableWindow(false);
localPort.EnableWindow(false);
rootdir.EnableWindow(false);
m_exit.EnableWindow(false);
m_bStart = true;
}
else
{
//StopWebServer();
m_start.SetWindowTextA("开启");
LocalIP.EnableWindow(true);
localPort.EnableWindow(true);
rootdir.EnableWindow(true);
m_exit.EnableWindow(true);
m_bStart = false;
}
4.为服务器添加消息驱动动态显示日志信息:任何事件的触发都会显示在状态列表中。函数实现了时间+消息的格式。
在CWebServerDlg.h添加成员函数:
afx_msg LRESULT AddLog(WPARAM wParam, LPARAM IPatam);
在CWebServerDlg.cpp实现
//显示日志信息:
LRESULT CWebServerDlg::AddLog(WPARAM wParam, LPARAM IPatam)
{
char szBuf[1024];
CString *strTemp = (CString *)wParam;
SYSTEMTIME st;
GetLocalTime(&st);
wsprintf(szBuf, "%02d:%02d:%02d.%03d %s", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, *strTemp);
m_list.AddString(szBuf);
m_list.SetTopIndex(m_list.GetCount() - 1);
delete strTemp;
strTemp = NULL;
return 0L;
}
5.此时已基本实现服务器的界面总控,演示效果: