有没有人帮我解释一下。

123123zdas 2009-05-29 01:05:45
下面这段代码是分析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);

}
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
thirddata 2009-05-29
  • 打赏
  • 举报
回复
if 语句是判断收到的数据是否符合协议设计,这个跟你的协议设计有很大关系的。
123123zdas 2009-05-29
  • 打赏
  • 举报
回复
这个我知道,但是不知道那些if语句的条件是什么意思啊。
bragi523 2009-05-29
  • 打赏
  • 举报
回复
这主要是协议的问题
前56个字节大概都是一样的
然后对后面的进行解析

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧