2011-04-04 57 views
1

你好,我使用NetServerEnum获得本地网络计算机(LAN)的列表 我想知道它的回报(出)地址 例如,他们应该像netserverenum的回归

  • \ 192.168.1.10 \ ComputerName1
  • \ 192.168.1.10 \ ComputerName2
  • \ 192.168.1.10 \ ComputerName3

?或者只是网络路由器上存在的计算机名称?

我不是在网络机器上测试它,它会真的很有你告诉我这一点。

谢谢。

回答

1

NetServerEnum基本上是NetBIOS日子里的剩余物,所以它只处理“扁平”(NetBIOS)名称。这里有一段代码可以显示它可以给你什么名字:

#include <windows.h> 
#include <lm.h> 
#include <iostream> 

int main() { 

    SERVER_INFO_100 *info; 
    DWORD count; 
    DWORD total_servers; 
    DWORD resume = 0; 

    NetServerEnum(NULL, 
     100, 
     (BYTE **)&info, 
     MAX_PREFERRED_LENGTH, 
     &count, 
     &total_servers, 
     SV_TYPE_NT, NULL, 
     &resume); 

    for (int i=0; i<count; i++) 
     std::wcout << info[i].sv100_name << "\n"; 

    NetApiBufferFree(info); 
    return 0; 
} 
0

不返回网络路由器的名称或IP地址。只有计算机名称已在sv100_name或SERVER_INFO_10x结构sv101_name场返回:

  • ComputerName0
  • ComputerName1
  • ComputerName2
  • ...
  • ComputerNameN