完成:
1,检测host是否开启FTPServer;
坚持FTP是否在开启状态,就是简单一个CSocket类,connect(srvIp, 21),这是个异步的调用,本身不用做多线程处理。
2,对ICMP发包进行多线程改造,代码完成,调试还有些问题,明天仔细分解。
总结:
1,MFC是有含量的,做成这样一个类库是不容易的,我现在的水平是没有资格对它说三道四的,愧疚以前的看法。MFC对网络和多线程的封装使得上层调用非常方便,如果还没掌握这些方便的解决方案,还是更虚心点学习比较好。
2,感谢cnfangbo老兄,http://blog.youkuaiyun.com/cnfangbo/archive/2007/03/28/1544373.aspx 这篇文章对多线程写得非常详细实用,很容易理解。其他的不多说,看看与SearchTool相关的一些问题,总结下MFC多线程使用的方法:
a,线程调用函数的入参:
struct threadInfo
{
UINT nMilliSecond;
CProgressCtrl* pctrlProgress;
};
b,线程执行的函数定义:
UINT ThreadFunc(LPVOID lpParam)
{
threadInfo* pInfo=(threadInfo*)lpParam;
return 0;
}
c,如果启动线程并执行其任务:
// 填写参数的结构变量
Info.nMilliSecond=m_nMilliSecond;
Info.pctrlProgress=&m_ctrlProgress;
// 生成线程 AfxBeginThread(ThreadFunc, &Info);
按照我的理解,需要带出值时,可以使用入参结构中的某些结构变量。