网上找的一个C++写的扫描局域网主机信息的程序,部分代码看不懂,求大神指导,非常感谢

karim_耿大少 karim_耿大少 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
void CNeighborInfoDlg::ReceiveMessage()
{
BYTE Buf[500];
//m_UDPSocket.Receive(Buf,500,0);
static CString strOldIP;
CString str,strIP,strHost,strHex,strMac,Host,Group,User;
UINT dport;
m_socket.ReceiveFrom(Buf,500,strIP,dport,0);

if(strIP==(char)NULL||strIP==strOldIP)return;
strOldIP=strIP;

//ip
int index=m_ListView.InsertItem(0,strIP);

strHost="";
strHex="";
User="?";
Host="\\";

int tem=0,num=0;
bool bAdd=true;

for(int i=0;i<500;i++)
{
if(i%50==0)
TRACE("\n");
TRACE("%c",Buf[i]);
}

//nbtstat前面的57个字节是
for(i=57;i<500;i++) //57-72
{
//end
if(Buf[i]==0xcc)
break;

if(Buf[i]==0x20)
bAdd=false;
if(bAdd)
{
str.Format("%c",Buf[i]);
if(Buf[i]>=' ')strHost+=str;

str.Format("%02x.",Buf[i]);
strHex+=str;
}

if((++tem)%18==0)
{
bAdd=true;
//m_ListBox.AddString(strHost);//
strHost.TrimRight((char)NULL);
if(strHost=="")
{
strMac.Delete(17,strMac.GetLength()-17);
m_ListView.SetItem(index,4,LVIF_TEXT,strMac, 0, 0, 0,0);
break;
}

if(num==0&&strHost!="")
{
m_ListView.SetItem(index,2,LVIF_TEXT,strHost, 0, 0, 0,0);
Host=strHost;
num++;
}
else
{
if(Host!=strHost&&num==1&&strHost!="")
{
m_ListView.SetItem(index,1,LVIF_TEXT,strHost, 0, 0, 0,0);
Group=strHost;
num++;
}
else
{
if(strHost!=Host&&strHost!=Group&&num==2&&strHost!="")
{
User=strHost;
if(User!="__MSBROWSE__")
{
m_ListView.SetItem(index,3,LVIF_TEXT,User, 0, 0, 0,0);
num++;
}
}
}

}

strMac=strHex;
strHost="";
strHex="";

}

}

SetEvent(wait_handle);
}
...全文
评论 3
收藏 已收藏
分享
返回顶部
karim_耿大少
C++ 语言 65,214 成员 250,514 内容