网络编程(二)
上面一篇简单介绍了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 获得本地网络的所有信息
总的网络关系不是太清楚。。。