我用java的如下方法:
InetAddress add= InetAddress.getByName(ip);
String hostname=add.getHostName();
可以得到同网段的其他主机的主机名,但是其他网段的主机名得不到得到的hostname是ip地址。而我用C#的DNS类的Dns.GetHostByAddress()可以得到其他网段的主机名。这是为什么呢?java如何实现获得其他网段的主机名呢?谢谢!!!

解决方案 »

  1.   

    InetAddress getByName(String host)是在给定主机名的情况下确定主机的 IP 地址。host是主机名 
      

  2.   

    什么意思呢?
    不同网段 不知道 www.csdn.net算不算不同网段的地址
    InetAddress add= InetAddress.getByName("www.csdn.net");
    String hostname=add.getHostAddress();
      

  3.   

    获得远程主机地址的方法是:getHostName()
    getByName只是得到一个InetAddress 
      

  4.   

    getByName
    public static InetAddress getByName(String host)
                                 throws UnknownHostException在给定主机名的情况下确定主机的 IP 地址。 
    主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。 对于以字面值 IPv6 地址指定的 host,在 RFC 2732 中定义的形式或在 RFC 2373 中定义的字面值 IPv6 地址格式都可以接受。IPv6 范围地址也受支持。有关 IPv6 范围地址的描述,请参见这里。 如果主机为 null,则返回表示回送接口地址的 InetAddress。请参阅 RFC 3330 的第 2 节和 RFC 2373 的第 2.5.3 节。 
    参数:
    host - 指定的主机,或 null。 
    返回:
    给定主机名的 IP 地址。 
    抛出: 
    UnknownHostException - 如果找不到 host 的 IP 地址,或者 scope_id 是为全局 IPv6 地址指定的。 
    SecurityException - 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作
      

  5.   

    他是想问JAVA如何通过IP获得其他网段的主机名Hostname