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

简介:
  这个方法用来得到主机的 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,如需转载请自行联系原作者

相关文章
|
5天前
|
缓存 安全 Java
【Java并发】【synchronized】适合初学者体质入门的synchronized
欢迎来到我的Java线程同步入门指南!我不是外包员工,梦想是写高端CRUD。2025年我正在沉淀中,博客更新速度加快,欢迎点赞、收藏、关注。 本文介绍Java中的`synchronized`关键字,适合初学者。`synchronized`用于确保多个线程访问共享资源时不会发生冲突,避免竞态条件、保证内存可见性、防止原子性破坏及协调多线程有序访问。
45 8
【Java并发】【synchronized】适合初学者体质入门的synchronized
|
5天前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
35 12
|
5天前
|
存储 监控 Java
《从头开始学java,一天一个知识点》之:数组入门:一维数组的定义与遍历
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。明日预告:《多维数组与常见操作》。 通过实例讲解数组的核心认知、趣味场景应用、企业级开发规范及优化技巧,帮助你快速掌握Java数组的精髓。
54 23
|
18天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
143 60
【Java并发】【线程池】带你从0-1入门线程池
|
26天前
|
机器学习/深度学习 算法 文件存储
神经架构搜索:自动化设计神经网络的方法
在人工智能(AI)和深度学习(Deep Learning)快速发展的背景下,神经网络架构的设计已成为一个日益复杂而关键的任务。传统上,研究人员和工程师需要通过经验和反复试验来手动设计神经网络,耗费大量时间和计算资源。随着模型规模的不断扩大,这种方法显得愈加低效和不够灵活。为了解决这一挑战,神经架构搜索(Neural Architecture Search,NAS)应运而生,成为自动化设计神经网络的重要工具。
|
2月前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
428 89
|
2月前
|
机器学习/深度学习 数据采集 人工智能
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
GeneralDyG 是南洋理工大学推出的通用动态图异常检测方法,通过时间 ego-graph 采样、图神经网络和时间感知 Transformer 模块,有效应对数据多样性、动态特征捕捉和计算成本高等挑战。
81 18
GeneralDyG:南洋理工推出通用动态图异常检测方法,支持社交网络、电商和网络安全
|
2月前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
118 60
|
3月前
|
域名解析 缓存 网络协议
优化Lua-cURL:减少网络请求延迟的实用方法
优化Lua-cURL:减少网络请求延迟的实用方法
|
3月前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
163 2

热门文章

最新文章