Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址

本文涉及的产品
.cn 域名,1个 12个月
简介:
  这个方法用来得到主机的 IP 地址,这个 IP 地址可能是 IPv4 的地址,也可能是 IPv6 的地址。 getHostAddress 方法的定义如下:
public  String getHostAddress()
无论InetAddress 对象是使用哪种方式创建的,getHostAddress 方法都不会访问DNS 服务器。如果想访问使用IPv6 地址的远程主机,需要在操作系统上安装IPv6 协议。下面是Windows 2003 上安装IPv6 协议的步骤:

第一步: 打开本地连接属性对话框。如图1所示
图1 “本地连接”属性对话框

 
第二步: 点击安装按钮,出现选择网络组件类型对话框,选择协议选项后,点击添加按钮,出现如图2 选择网络协议对话框,选择“Microsoft TCP/IP  版本6” ,最后点击确定按钮。
图2  “选择网络协议”对话框
除了使用图形化界面来安装IPv6 外,还可以使用如下命令行来安装IPv6
netsh interface ipv6 install
下面的代码 演示了如何利用getHostAddress 得到IPv4 IPv6 地址,以及如何得到本机的所有IP 地址(包括IPv4 IPv6 地址)。
package  mynet;

import  java.net. * ;

public   class  MyIP
{
    
public   static   void  main(String[] args)  throws  Exception
    {
        
//  输出IPv4地址
        InetAddress ipv4Address1  =  InetAddress.getByName( " 1.2.3.4 " );
        System.out.println(
" ipv4Address1:  "   +  ipv4Address1.getHostAddress());
        InetAddress ipv4Address2 
=  InetAddress.getByName( " www.ibm.com " );
        System.out.println(
" ipv4Address2:  "   +  ipv4Address2.getHostAddress());
        InetAddress ipv4Address3 
=  InetAddress.getByName( " myuniverse " );
        System.out.println(
" ipv4Address3:  "   +  ipv4Address3.getHostAddress());
        
//  输出IPv6地址
        InetAddress ipv6Address1  =  InetAddress.getByName( " abcd:123::22ff " );
        System.out.println(
" ipv6Address1:  "   +  ipv6Address1.getHostAddress());
        InetAddress ipv6Address2 
=  InetAddress.getByName( " www.neu6.edu.cn " );
        System.out.println(
" ipv6Address2:  "   +  ipv6Address2.getHostAddress());
        
//  输出本机全部的IP地址
        InetAddress Addresses[]  =  InetAddress.getAllByName( " myuniverse " );
        
for  (InetAddress address : Addresses)
            System.out.println(
" 本机地址: "   +  address.getHostAddress());
    }
}
在上面代码 使用了www.neu6.edu.cn 作为域名,这个域名是东北大学用于测试IPv6 地址的域名。下面是其他一些可用于测试IPv6 的域名,读者可以使用ping 命令或例程3-9 来测试这些域名。
www6.whu.edu.cn (武汉大学)
www.jlu6.edu.cn(吉林大学)
www6.usst.edu.cn(上海理工大学)
www.fudan6.edu.cn(复旦大学)
在访问这些域名之前,本机必须使用上述的方法或命令行安装IPv6 ,否则getByName 方法将抛出UnknownHostException 异常。
     运行结果:
ipv4Address1:  1.2.3.4
ipv4Address2: 
129.42.60.212
ipv4Address3: 
192.168.18.10
ipv6Address1: abcd:
123 : 0 : 0 : 0 : 0 : 0 :22ff
ipv6Address2: 
2001 :da8: 9000 :b255: 200 :e8ff:feb0:5c5e
本机地址:
192.168.18.10
本机地址:
192.168.83.1
本机地址:
192.168.189.1
本机地址:
193.10.10.10
本机地址:
0 : 0 : 0 : 0 : 0 : 0 : 0 : 1
在上面的运行结果中的IP 地址192.168.18.10 192.10.10.10 是和本机网卡绑定的两个IP ,而192.168.83.1 192.168.189.1 VMware 虚拟机软件在本机安装的两个虚拟网卡的地址。最后一个IPv6 地址0:0:0:0:0:0:0:1 是代表本机的IPv6 网址,相当于IPv4 地址的127.0.0.1 。读者可以使用如下命令行添加IPv6 地址和删除IPv6
添加IPv6 地址
netsh interface ipv6 add address  " 本地连接 "  aa:bb::cc
删除IPv6
netsh interface ipv6 uninstall
注意:安装IPv6不需要重新启动计算机,但添加IPv6地址或删除IPv6后,必须重新启动计算机才能生效。







 本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/214761,如需转载请自行联系原作者

相关文章
|
1月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
74 9
|
25天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
46 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
21天前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
29天前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
41 4
|
29天前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
30 4
|
1月前
|
网络协议 Java 物联网
Java网络编程知识点
Java网络编程知识点
45 13
|
27天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
26 1
|
1月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
1月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。