如下是我的代码,求哪位大神给我解答下呗,为什么我获取的IP都是重复的 还显示了两遍?
CString strName;
CString strIP;
m_lst.DeleteAllItems();
HANDLE hEnum;
WSADATA wsaData;
DWORD Count = 0xFFFFFFFF;
DWORD MyBuffer = 4096;
DWORD dMyRes;
NETRESOURCE *nMyRes0 = NULL;
NETRESOURCE *nMyRes1 = NULL;
NETRESOURCE *nMyRes2 = NULL;
LPVOID lMyBuffer = new char[4096];
LPVOID lMyBuffer1 = new char[40960];
LPVOID lMyBuffer2 = new char[4096];
int nIndex = 0;
int nret=WSAStartup(MAKEWORD(2,2),&wsaData);
if(nret)
{
MessageBox("加载失败了!");
}
dMyRes=WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
NULL,&hEnum);
dMyRes=WNetEnumResource(hEnum,&Count,lMyBuffer,&MyBuffer);
nMyRes0=(NETRESOURCE*)lMyBuffer;
//.......
// CList<CString,CString>myList;
//.......
for(DWORD n=0;n<Count;n++,nMyRes0++)
{
DWORD Count1 = 0xFFFFFFFF;
dMyRes=WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
nMyRes0,&hEnum);
dMyRes=WNetEnumResource(hEnum,&Count1,lMyBuffer1,&MyBuffer);
nMyRes1=(NETRESOURCE*)lMyBuffer1;
for(DWORD i=0;i<Count1;i++,nMyRes1++)
{
DWORD dMyCount=0xFFFFFFFF;
dMyRes=WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
nMyRes1,&hEnum);
dMyRes=WNetEnumResource(hEnum,&dMyCount,lMyBuffer2,&MyBuffer);
nMyRes2=(NETRESOURCE*)lMyBuffer2;
for(int j=0;j<dMyCount;j++,nMyRes2++)
{
CString myName = nMyRes2->lpRemoteName;
myName=myName.Right(myName.GetLength()-2);
nIndex=m_lst.InsertItem(0,myName);
struct hostent* pMyhost;
pMyhost = gethostbyname(myName);
if(pMyhost==NULL)
{
m_lst.SetItemText(nIndex,1,"无法获得IP地址");
}
else
{
for(int k=0;k<4;k++)
{
CString MyAddress;
if(k>0)
{
strIP+=".";
}
MyAddress.Format("%u",(unsigned int)
((unsigned char*)pMyhost->h_addr_list[0])[k]);
strIP+=MyAddress;
}
m_lst.SetItemText(nIndex,1,strIP);
CString buf;
buf.Format("%d",dMyCount);
SetDlgItemText(IDC_EDIT1,buf);
}
}
}
}
delete lMyBuffer;
delete lMyBuffer1;
delete lMyBuffer2;
WNetCloseEnum(hEnum);
WSACleanup();
}
CDialog::OnTimer(nIDEvent);
}