java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)
来源:互联网 发布:正规网络兼职有哪些 编辑:程序博客网 时间:2024/05/14 21:36
第三章:java网络编程
Demo3-1给出了使用InetAddress的基本用法。示例中先使用InetAddress的getLocalHost方法获取了本机的IP地址,然后输出,使用getByName方法获得了google服务器的一个IP地址,由于google服务器有很多服务主机,当前获取的是哪一个服务的主机的IP地址并不确定,实际应用中,这是一个随机的值,这与DNS服务器有直接关系。使用了getByAllName方法可以获取google的所有服务主机名。最后使用了isReachable方法来判断一台主机的可达性。
需要说明的是,使用getLocalHost方法未必真的能够获取您想要的本机的IP地址(有人说,在windows上getLocalHost可以正确执行,获取到本机的IPV4地址,而在Linux上调用getLocalHost返回的是一个127.0.0.1的ip地址)。现在假想有一台主机有多张网卡,而且有多个IP地址,甚至这台主机即配置了IPV4又配置了IPV6,调用getLocalHost将会返回哪一个IP地址?很明显getLocalHost只能返回一个IP地址,因此就限定了getLocalHost方法并不是获取本机IP地址的最好方式。
Demo3-2给出了一台Linux系统一张网卡上配置IPV4和IPV6后,调用getLocalHost后的执行结果。从Configuration3-2中可以看出,在这台linux上配置了IPV4和IPV6,调用getLocalHost后,获取的是一个回环测试地址。
此外,使用InetAddress的isReachable时需要特别小心,因为默认情况下,isReachable使用ICMP报文来探测远程主机可达性(不一定使用ICMP,这与具体的实现有关),有很多服务器或者网络管理员禁用ping功能(ICMP),所以使用isReachable不可达,并不证明远程主机不存在。
Graphic3-2
Demo 3-1 InetAddress示例代码
package com.upc.upcgrid.guan.network.chapter03;
import java.io.IOException;
import java.net.InetAddress;
public class InetAddressTest {
}
Demo3-1执行结果:
local host : PC2011022509cjh/202.194.158.128
google : google.com/74.125.71.99
google : google.com/74.125.71.99
google : google.com/74.125.71.103
google : google.com/74.125.71.104
google : google.com/74.125.71.105
google : google.com/74.125.71.106
google : google.com/74.125.71.147
true
demo3-1的配置:
configuration 3-1:windows主机的配置
C:\Documents and Settings\Administrator>ipconfig
Windows IP Configuration
Ethernet adapter 本地连接:
Demo3-2 linux 执行的代码:
Demo3-2 的输出结果:
Localhost.localdomain/127.0.0.1
Demo3-2 的配置环境
Configuration 3-2 linux主机的配置
[root@localhost ~]# ifconfig
eth0
lo
3.1.2 NetworkInterface类
Graphic3-3 NetworkInterface类
Demo3-3 获取本机IPV4的地址
package com.upc.upcgrid.guan.network.chapter03;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class NetworkInterfaceTest {
}
Demo3-3的执行结构
在Configuration3-1下:
/202.194.158.128
在Configuration3-2下:
/202.194.158.184
Demo3-4 测试本机的IP地址
package com.upc.upcgrid.guan.network.chapter03;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class NetworkInterfaceTest2 {
}
Demo3-4的执行结果:
Configuration3-1 下的执行结果:
ip v4 : /202.194.158.128
Configuration3-2下的执行结果:
ip v6 : /fe80:0:0:0:2e0:4cff:fe3d:c273%2
ip v6 : /2001:da8:7006:8003:2e0:4cff:fe3d:c273%2
ip v4 : /202.194.158.184
ip v6 : /0:0:0:0:0:0:0:1%1
3.1.3 简单总结
- java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)
- java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)
- java网络编程(一)InetAddress和NetworkInterface
- java 网络 InetAddress和NetworkInterface
- Java网络编程之获取IP地址:InetAddress类
- Java网络编程之IP地址和InetAddress类
- Java网络编程之IP地址和InetAddress类
- Java网络编程从入门到精通(11):使用NetworkInterface类获得网络接口信息
- Java网络编程从入门到精通(11):使用NetworkInterface类获得网络接口信息
- Java网络编程从入门到精通(11):使用NetworkInterface类获得网络接口信息
- Java网络编程从入门到精通(11):使用NetworkInterface类获得网络接口信息
- JAVA网络编程二(InetAddress类、NetworkInterface类)
- java网络编程--IP与InetAddress
- JAVA笔记:Java网络编程(一)IP与InetAddress
- Java 获取IP/MAC地址等网络信息的方法
- 获取指定网络接口的IP地址
- java入门教程-12.1Java网络编程之IP地址和InetAddress类
- java获取有线网络的ip地址 与mac地址
- 根据wsdl文件生成java代理客户端(/传)
- Slob中kmalloc的实现
- FOB价格计算
- C#中 一次执行多条带GO的sql语句
- win32程序测试键盘钩子
- java 网络编程 -- IP地址的表示与网络接口信息的获取(InetAddress和NetworkInterface)
- android 相对布局
- C# 创建SQL Server 2005数据库及建表
- java 集合类型的clone
- HDU 2897 邂逅明下
- 爱 不说再见
- Java字符串跟ASCII码互转 收藏
- Android下打印调用栈
- WorkflowApplication 应用中变量、参数、书签