您的位置:程序门 -> vc/mfc -> 网络编程



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于局域网内ip的问题,请大家帮忙回答一下
发表于:2007-02-02 12:57:18 楼主
我在检索局域网内所有活动主机的时候,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的不行的,我怎么才能得到正确有结果呢?
发表于:2007-02-02 12:57:551楼 得分:0
有高手可以详细的讲解一下吗?
发表于:2007-02-02 13:01:572楼 得分:0
mark
发表于:2007-02-28 10:31:063楼 得分:0
请问你得到的是不是同一个工作组内的计算机啊?
我做了个类似的只是能得到工作组内的计算机!
发表于:2007-03-12 14:49:234楼 得分:0
如果都是windows系统的话,可以connect   到   139端口,判断是活动.  

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



快速检索

最新资讯
热门点击