`

网络编程(二)

 
阅读更多
上面一篇简单介绍了InetAddress的基本用法
现在简单说明下NetworkInterface可以获取本机网络接口的相关信息,包括硬件地址,MTU,所有的IP地址等信息,需要获取本机IP时,最好使用NetworkInterface对配置的IP地址进行筛选
三个静态方法 getNetworkInterfaces()
             getByName(String name)
             getByInetAddress(InetAddress addr)
1.getNetworkInterfaces()

		Enumeration<NetworkInterface> e=NetworkInterface.getNetworkInterfaces();
		while(e.hasMoreElements())
		System.out.println(e.nextElement().getName());

结果
//三个练习不清楚
lo        //lo是环回接口
eth0      //本地连接的地址
ppp0      //网络拨号的

2.getByName(String name)//上面的网络接口名称
NetworkInterface n=	NetworkInterface.getByName("ppp0");
		System.out.println(n.getInetAddresses().nextElement().getHostAddress());
 
结果
14.109.117.39 //我的网络地址

3.getByInetAddress(InetAddress addr)
NetworkInterface n=	NetworkInterface.getByInetAddress(InetAddress.getLocalHost());
				System.out.println(n.getName());
 
结果
ech0        //我设置的本地连接的

总的来说
InetAddress使用InetAddress的getByName方法可以获取远程服务的IP地址(通过DNS服务获取的),使用getAllByName方法可以获取远程指定服务的所有服务主机的IP地址。
用getLocalHost方法可以获取本地IP地址,但是这种方式并不可靠,当出现多张网卡,或一个网络接口配置了多个IP,或者不同的操作系统类型,都不能保证能够获得想要的IP。
NetworkInterface 获得本地网络的所有信息
总的网络关系不是太清楚。。。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics