Java 中怎么利用Socket编程识别网络主机

发布时间:2021-08-10 16:20:13 作者:Leah
来源:亿速云 阅读:168

这期内容当中小编将会给大家带来有关Java 中怎么利用Socket编程识别网络主机,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

获取主机地址信息

在Java中我们使用InetAddress类来代表目标网络地址,包括主机名和数字类型的地址信息,并且InetAddress的实例是不可变的,每个实例始终指向一个地址。InetAddress类包含两个子类,分别对应两个IP地址的版本:

我们通过前面的笔记可以知道: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 {               // 获取主机网络接口列表               Enumeration<NetworkInterface> interfaceList = NetworkInterface                       .getNetworkInterfaces();               // 检测接口列表是否为空,即使主机没有任何其他网络连接,回环接口(loopback)也应该是存在的               if (interfaceList == null) {                   System.out.println("--没有发现接口--");               } else {                   while (interfaceList.hasMoreElements()) {                       // 获取并打印每个接口的地址                       NetworkInterface iface = interfaceList.nextElement();                       // 打印接口名称                       System.out.println("Interface" + iface.getName() + ";");                       // 获取与接口相关联的地址                       Enumeration<InetAddress> 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编程识别网络主机

上述就是小编为大家分享的Java 中怎么利用Socket编程识别网络主机了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 12.4-全栈Java笔记:Java网络编程(二)
  2. java如何实现Socket通信之单线程服务

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java socket

上一篇:React中怎么实现状态自动保存

下一篇:Spring IoC中怎么实现依赖注入

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》