局域网中透过IP获取主机名

局域网中通过IP获取主机名
今天老大给了个任务,一直没搞定,
在Cocoa程序中已经知道在线机器的IP,现在是我需要通过这个IP获取到该主机的计算机名。由于我用的是macos,所以macos的机器可以通过苹果的相关服务可以获取到,但是我不知到怎么获取当前局域网中windows 的hostname信息,请各位大侠帮帮忙,谢谢,着急,立等!

------解决方案--------------------
gethostbyaddr
------解决方案--------------------
nbtstat -a 192.168.0.5 
------解决方案--------------------
system("nbtstat -A 192.168.60.40 >nbtstat.txt");
//然后读文件nbtstat.txt的内容。

参考下面:
C:\>nbtstat -A 192.168.60.40

本地连接:
Node IpAddress: [192.168.60.40] Scope Id: []

           NetBIOS Remote Machine Name Table

       Name               Type         Status
    ---------------------------------------------
    HXZZY-ZHAOZHONG<00>  UNIQUE      Registered
    WORKGROUP      <00>  GROUP       Registered
    HXZZY-ZHAOZHONG<20>  UNIQUE      Registered
    WORKGROUP      <1E>  GROUP       Registered

    MAC Address = 48-5B-39-CC-38-E5


C:\>
------解决方案--------------------
这个需要网络中有WINS服务器的支持。

------解决方案--------------------
这样说吧,gethostbyaddr能够查询public IP对应的hostname,那也是因为你的主机能连Internet,且Internet上有DNS能够查询,你把Internet连接断开,或者不指明DNS服务器的地址,那么查询就会失败。

同理,Windows的主机名反查,也是由于WINS的支持,所以建议先看看Windows网络的相关知识,再看看Mac有无相应的API可以操作Windows网络。