编程接受用户通过命令行参数指定主机名,利用该主机名找到网络中对应计算机的IP地址并显示出来。

解决方案 »

  1.   


    import java.io.InputStreamReader;
    import java.net.InetAddress;
    import java.net.UnknownHostException;public class Test {
    public static void main(String[] args) {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    InetAddress address = null;
    try {
    System.out.println("请输入主机名字:");
    String name = br.readLine();
    address = InetAddress.getByName(name);
    String ipAddress = address.toString();
    ipAddress = ipAddress.substring(ipAddress.lastIndexOf("/") + 1);
    System.out.println(ipAddress);
    } catch (UnknownHostException e) {
    System.out.println("主机名字不存在");
    } catch (IOException e1) {
    e1.printStackTrace();
    } }
    }
      

  2.   

    演示结果
    请输入主机名字:
    www.baidu.com
    123.235.44.65
      

  3.   

    答:你说的"主机名"是什么意思?若是指机器所配置的DNS系统中的域名,则通过DNS解析(即:InetAddress类就可以完成),但若是通常操作系统中的机器的"主机名"(hostName),则无法找到(此题无解).
      

  4.   

    运行的时候用命令行
    java Addr 后面带主机名,比如:
    java Addr www.tarena.com.cn
    显示123.103.97.25
    java Addr www.sohu.com
    显示61.135.179.191import java.net.InetAddress;
    import java.net.UnknownHostException;public class Addr {
        public static void main(String[] args) {
         if(args.length==0){
         System.out.println("请在命令行上带主机名,类似如下格式:");
         System.out.println("java Addr www.sohu.com");
         return;
         }
            try {
                InetAddress address = InetAddress.getByName(args[0]);
                String ipAddress = address.toString();
                ipAddress = ipAddress.substring(ipAddress.lastIndexOf("/") + 1);
                System.out.println(ipAddress);
            } catch (UnknownHostException e) {
                System.out.println("主机名字不存在");
            }
    }
    }
      

  5.   

    学了一个类的用法InetAddress.getByName(name);getAllByName
    public static InetAddress[] getAllByName(String host)
                                      throws UnknownHostException在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。 
    主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。 对于以字面值 IPv6 地址 指定的 host,在 RFC 2732 中定义的形式或在 RFC 2373 中定义的字面值 IPv6 地址格式都可以接受。字面值 IPv6 地址还可以通过追加范围时区标识符或 scope_id 来限定。scope_id 的语法和用法在这里描述。 如果主机为 null,则返回表示回送接口地址的 InetAddress。请参阅 RFC 3330 的第 2 节和 RFC 2373 的第 2.5.3 节。 如果有安全管理器,并且 host 非 null,host.length() 不等于零,则使用主机名和 -1 作为参数调用安全管理器的 checkConnect 方法,来查看是否允许该操作。 
    参数:
    host - 主机名,或 null。 
    返回:
    给定主机名的所有 IP 地址所组成的数组。 
    抛出: 
    UnknownHostException - 如果找不到 host 的 IP 地址,或者 scope_id 是为全局 IPv6 地址指定的。 
    SecurityException - 如果安全管理器存在并且其 checkConnect 方法不允许进行该操作。