有没有人帮我解释一下。
下面这段代码是分析buf中的东西。可是我看不太懂。可不可以把for循环里面的语句介绍一下?
void CSearchIPDlg::OnReceive()
{
BYTE Buf[500];
//m_UDPSocket.Receive(Buf,500,0);
//AfxMessageBox("here1!!!!");
CString str,strIP,strHost,strHex,strMac,Host,Group,User;
UINT dport;
m_UDPSocket.ReceiveFrom(Buf,500,strIP,dport,0);//查找网络中IP对应的主机相关信息存放在buf中
if(strIP==(char)NULL||strIP==strOldIP)return;
strOldIP=strIP;
int index=m_ListView.InsertItem(0,strIP);
strHost="";
strHex="";
User="?";
Host="\\";
int tem=0,num=0;
bool bAdd=true;
//if(m_strIP==strIP)
for(i=57;i<500;i++) //57-72
{
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;
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++;
}
//num++;
}
}
}
strMac=strHex;
strHost="";
strHex="";
}
}
SetEvent(wait_handle);
}