大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关Java 中怎么利用Socket编程识别网络主机,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了秦皇岛免费建站欢迎大家使用!
获取主机地址信息
在Java中我们使用InetAddress类来代表目标网络地址,包括主机名和数字类型的地址信息,并且InetAddress的实例是不可变的,每个实例始终指向一个地址。InetAddress类包含两个子类,分别对应两个IP地址的版本:
Inet4Address
Inet6Address
我们通过前面的笔记可以知道:IP地址实际上是分配给主机与网络之间的连接,而不是主机本身,NetworkInterface类提供了访问主机所有接口的信息的功能。下面我们通过一个简单的示例程序来学习如何获取网络主机的地址信息:
import java.net.*; import java.util.Enumeration; public class InetAddressExample { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { // 获取主机网络接口列表 EnumerationinterfaceList = NetworkInterface .getNetworkInterfaces(); // 检测接口列表是否为空,即使主机没有任何其他网络连接,回环接口(loopback)也应该是存在的 if (interfaceList == null) { System.out.println("--没有发现接口--"); } else { while (interfaceList.hasMoreElements()) { // 获取并打印每个接口的地址 NetworkInterface iface = interfaceList.nextElement(); // 打印接口名称 System.out.println("Interface" + iface.getName() + ";"); // 获取与接口相关联的地址 Enumeration addressList = iface .getInetAddresses(); // 是否为空 if (!addressList.hasMoreElements()) { System.out.println("\t(没有这个接口相关的地址)"); } // 列表的迭代,打印出每个地址 while (addressList.hasMoreElements()) { InetAddress address = addressList.nextElement(); System.out .print("\tAddress" + ((address instanceof Inet4Address ? "(v4)" : address instanceof Inet6Address ? "v6" : "(?)"))); System.out.println(":" + address.getHostAddress()); } } } } catch (SocketException se) { System.out.println("获取网络接口错误:" + se.getMessage()); } // 获取从命令行输入的每个参数所对应的主机名和地址,迭代列表并打印 for (String host : args) { try { System.out.println(host + ":"); InetAddress[] addressList = InetAddress.getAllByName(host); for (InetAddress address : addressList) { System.out.println("\t" + address.getHostName() + "/" + address.getHostAddress()); } } catch (UnknownHostException e) { System.out.println("\t无法找到地址:" + host); } } } }
查看运行效果:
上述就是小编为大家分享的Java 中怎么利用Socket编程识别网络主机了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。