关于局域网内IP的有关问题,请大家帮忙回答一下

关于局域网内IP的问题,请大家帮忙回答一下
我在检索局域网内所有活动主机的时候,IP的检索用的是以下这个代码

WSADATA   wsaData;
if   (WSAStartup(MAKEWORD(   1,1   ),   &wsaData))   return   FALSE;

CString   hostaddr   =   _T( " ");
struct   hostent   *host   =   gethostbyname(hostname);
sockaddr_in   sa;
for   (int   nAdapter   =   0;   host   !=   NULL   &&   host-> h_addr_list[nAdapter];   nAdapter++)  
{
memcpy   (   &sa.sin_addr.s_addr,   host-> h_addr_list[nAdapter],   host-> h_length);
}

hostaddr   =   inet_ntoa(sa.sin_addr);

WSACleanup();



但是结果有时候是192.x.x.x,有的时候却是202.x.x.x的,192的那个是可以connect成功的,但202的不行的,我怎么才能得到正确有结果呢?

------解决方案--------------------
MARK
------解决方案--------------------
请问你得到的是不是同一个工作组内的计算机啊?
我做了个类似的只是能得到工作组内的计算机!
------解决方案--------------------
如果都是windows系统的话,可以connect 到 139端口,判断是活动.

要不然,发个ARP包也行.
------解决方案--------------------
根据hostname得到了202开头的ip地址,是不是和你的dns解析器配置有关?如果要得到局域网的ip地址,局域网之内有dns服务器吗?你得到的ip地址很可能是你的公网中的dns服务器返回给你的;
最好根据自己机器的ip地址和子网掩码,算出自己机器所处的网络地址,然后给该网络地址下的所有主机发送arp请求包,如果有回复,就说明该机器存活