求助 为何我获取的IP都是一样的?
如下是我的代码,求哪位大神给我解答下呗,为什么我获取的IP都是重复的 还显示了两遍?
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);
}

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);
}
...全文
相关推荐
为什么windows10自动获取到的IP是169.254段的? 如何解决
为什么我的windows10自动获取到的IP为169.254? 如何解决 为什么win10自动获取IP为169.254
Linux如何自动获取IP地址及配置静态IP地址上网
Linux配置自动获取IP地址及配置静态IP地址上网的方法,比较详细
java IP地址工具类,java IP地址获取,java获取客户端IP地址
NULL 博文链接:https://fanshuyao.iteye.com/blog/2436489
qt 获取本机的公网IP、内网IP、网关
获取设备端的公网IP、内网IP以及网关。
thinkphp如何获取客户端IP
thinkphp框架中系统内置了get_client_ip方法用于获取客户端的IP地址,使用示例: $ip = get_client_ip(); 除了thinkphp内置get_client_ip函数外,也可使用下面函数获取客户端IP地址。 $type表示返回类型 0 返回IP地址, 1 返回IPV4地址数字 分享代码如下 function get_client_ip($type = 0) { $type = $type ? 1 : 0; static $ip = NULL; if ($ip !== NULL) return $ip[$type]; if (i


网络编程

