1,完成通过IP地址检测主机SMB服务(简单等同于是否有共享文件)是否开启状态。
SearchSite.cpp中增加全局函数CheckSMBStatus,因为该函数需要在新建线程中调用,没有定义成SearchSite类的成员函数。
线程函数ThreadFuncCheckStatus中,检测主机在线之后,再根据serverType(RadioButton进行选择的值)确定是判断FTP状态还是SMB状态:
2,CheckSMBStatus函数检测SMB服务状态的原理,代码在上面。
/* 1,构造NetResource入参 */
这个构造逻辑中做了很多的简化,灵活性肯定不够,但实验了一下,可以以此返回正确的结果。
/* 2,使用WNet函数获取网络资源 */
只使用了函数WNetOpenEnum。
/* 3,通过出参 坚持SMB状态,并返回结果 */
函数WNetOpenEnum的结果就是SMB服务状态的结果。
3,效果图:
4,在处理选中UpdateDataSMB置port为0时发生了问题
void CSearchSite::OnRadioSmb()
{
// TODO: Add your control notification handler code here
m_port = 0;
UpdateData(FALSE);
}
这样的函数可以是port为零,但是控件无法被选中,这个问题留在明天吧。