获得实验室所有主机的IP地址和主机名

  • 一、InetAddress类
  • 二、获得指定IP地址和主机名的主要方法以及练习
    • 1、主要方法
    • 2、源码
  • 三、获得实验室局域网中所有开机主机名称和IP地址
    • 1、源码
    • 2、运行结果

一、InetAddress类

在网络API套接字,InetAddress类和它的子类型对象使用域名DNS系统,处理主机名到主机IPv4或IPv6地址的转换。
由于InetAddress类只有一个构造函数,且不能传递参数,所以不能直接创建该对象实例,比如下面的做法就是错误的:
InetAddress ia = new InetAddress (); ×
可通过以下5个成员方法获得InetAddress对象或InetAddress数组:
(1)getAllByName(String host)方法返回一个InetAddress对象的引用,每个对象包含一个表示相应主机名的单独的IP地址,这个IP地址是通过host参数传递的,例如:
InetAddress [] ia = InetAddress.getAllByName(“MyHost”);
(2)getByAddress(byte [] addr)方法返回一个InetAddress对象的引用,这个对象包含了一个Ipv4地址或Ipv6地址,Ipv4地址是一个4字节数组,Ipv6地址是一个16字节地址数组。
(3)getByAddress(String host, byte [] addr)方法返回一个InetAddress对象的引用,这个InetAddress对象包含了一个由host和4字节的addr数组指定的IP地址,或者是host和16字节的addr数组指定的IP地址。
(4)getByName(String host)方法返回一个InetAddress对象,该对象包含了一个与host参数指定的主机相对应的IP地址。
(5)getLocalHost()方法返回一个InetAddress对象,这个对象包含了本地机的IP地址。

以上各方法均可能产生的UnknownHostException(未知的主机名)异常。当获得了InetAddress类对象的引用就可以调用InetAddress的各种方法来获得InetAddress子类对象中的IP地址信息。例,通过调用getCanonicalHostName()从域名服务中获得标准的主机名,getHostAddress()获得IP地址,getHostName()获得主机名,isLoopbackAddress()判断IP地址是否是一个loopback环回地址。

二、获得指定IP地址和主机名的主要方法以及练习

1、主要方法

返回值类型 方法原型 方法功能
byte[] getAddress() 获取本对象的IP
static InetAddress[] getAllByName(String host) 从DNS获取域名相应的所有IP地址
static InetAddress getByAddress(byte[] addr) 通过IP地址创建InetAddress(IP地址必须是byte数组)
static InetAddress getByAddress(String host,byte[] addr) 通过IP地址创建InetAddress(IP地址必须是byte数组),host只作为一个表示addr的别名,放在’/’前面,可以是任意字符串。
static InetAddress getByName(String host) 连接本地的DNS服务器,查找名字和数字地址(有缓存会直接查缓存),没找到会抛出异常。
String getCanonicalHostName() 得到主机的主机名,是否访问DNS服务器取决于DNS服务器如何解释主机名和主机别名
String getHostAddress() 返回一个字符串,包含点分四段格式的IP地址
String getHostName() 获取主机别名,根据创建InetAddress对象的不同方式返回值也有所不同。
static InetAddress getLocalHost() 为运行这个代码的主机返回一个InetAddress对象
boolean isLoopbackAddress() 用于检查 InetAddress 是否为回环地址

2、源码

由于练习比较简单,就给大家源码自己去测试运行看结果。
代码如下:

import java.net.*;
import java.util.*;class InetAddressDemo{public static void main (String [] args) throws UnknownHostException{//练习一,获得本地主机信息InetAddress ia = InetAddress.getByName("localhost");System.out.println(ia.toString());//练习二,获得指定域名主机的信息(www.baidu.com)String host = "www.baidu.com";InetAddress ia1 = InetAddress.getByName(host);System.out.println(ia1.toString());//练习三,根据指定域名获得所有信息(www.baidu.com)String host1= "www.baidu.com";InetAddress[] ia2 = InetAddress.getAllByName(host1);for(int i=0;i<ia2.length;i++){System.out.println(ia2[i].getHostName() + " : "+ia2[i].getHostAddress());}//练习四,比较根据localhost和计算机名获得信息的不同String host = "localhost";    //更改localhost为你现在所使用计算机名,查看不同InetAddress ia = InetAddress.getByName (host);System.out.println ("Canonical Host Name = " + ia.getCanonicalHostName ());System.out.println ("Host Address = " + ia.getHostAddress ());System.out.println ("Host Name = " + ia.getHostName ());System.out.println ("Is Loopback Address = " + ia.isLoopbackAddress ());//练习五,获得本地主机所有IP地址String host = InetAddress.getLocalHost().getHostName();InetAddress[] ia = InetAddress.getAllByName(host);for(int i = 0; i <ia.length; i++)System.out.println(ia[i]);//练习六,根据IP地址构造InetAddressbyte [] ip = new byte[] { (byte) 202, (byte) 117, (byte)128 , 7};  //可以更改数值超过255InetAddress ia = InetAddress.getByAddress("xxx",ip);System.out.println(ia);}}
}

三、获得实验室局域网中所有开机主机名称和IP地址

1、源码

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;public class scanhost {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString host=InetAddress.getLocalHost().getHostName();InetAddress ia=InetAddress.getByName(host);InetAddress address=null;String ip=ia.getHostAddress();String[]IPaddress=ip.split("\\.");for(int i=1;i<255;i++){address=InetAddress.getByName(IPaddress[0]+"."+IPaddress[1]+"."+IPaddress[2]+"."+i);if(address.isReachable(20)){System.out.println(address.getCanonicalHostName()+address);}else{System.out.println("未找到主机!");}}}
}

2、运行结果


【Java网络编程】获得实验室局域网中所有开机主机名称和IP地址,InetAddress类,在java中如何获取IP地址的方法相关推荐

  1. 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  2. Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

    Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...

  3. 【Java网络编程与IO流】Java之Java Servlet详解

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  4. Java网络编程(八)—— 组播和MulticastSocket

    Java网络编程(八)-- 组播和MulticastSocket 文章目录 Java网络编程(八)-- 组播和MulticastSocket 什么是组播 MulticastSocket类 总述 构造方 ...

  5. java网络编程 个人笔记 第二章 流

    java网络编程 个人笔记 第二章 流 流 I/O介绍 java流式输入/输出原理 输入输出流分类 节点流和处理流 节点流的类型 处理流的类型 InputStream(输入流) InputStream ...

  6. java网络编程,通过TCP,Socket实现多对一的局域网聊天室

    java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...

  7. 用java网络编程中的TCP方式上传文本文件及出现的小问题

    自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文 ...

  8. java 密钥工厂 desede_20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...

  9. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

    文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...

最新文章

  1. BZOJ1002 [FJOI2007]轮状病毒(最小生成树计数)
  2. 算了一挂,也不知准不准
  3. OPPM 一页纸项目管理 One-Page Project Management
  4. 手撕 CNN 经典网络之 AlexNet(理论篇)
  5. Linux make menuconfig查找并快速跳转指定驱动选项
  6. Request method 'GET' not supported解决方式
  7. 解析高校网络管理员如何制作网络电视墙
  8. 显示照片的二维直方图
  9. Atom编辑器有一个LF、CRLF的切换
  10. java把按钮和键盘对应_按键与按钮的区别?
  11. J2SE基础夯实系列之正则表达式Java
  12. ubuntu下安装php环境
  13. 等比数列求和公式的推导
  14. JavaScript 文件上传完整指南,附【图书中奖者名单】
  15. 英文电子书下载:salttiger.com
  16. MTK6580适应小分辨率
  17. java将Word转换成PDF
  18. html rfftq15.gif,STM32F4xx固件库
  19. R语言第一课:R和Rstudio
  20. 《网络基础学习之三》认识网线制作工具

热门文章

  1. 迈向阿尔茨海默病的无创脑刺激2.0时代
  2. 第二课学会组装计算机 教案,《计算机组装与维护第2章教案.doc
  3. 洪宗勝博士的教育翻轉大夢:用香蕉派翻转世界
  4. Laravel学习-文件上传
  5. java saas osgi_基于云计算Saas平台下的C2C大型网上商城(集UC聊天客户端+Extjs+Oracle+OSGI模型)...
  6. 面向教育行业的MDM(移动设备管理)解决方案
  7. 编写程序,求出并输出1000以内的所有的素数
  8. 咪咕mgv2000爱家tv、新烽火hg680-lc、cm211-1-zg、m304a-zn固件
  9. Harbor的部署和使用
  10. 交易开悟是什么体验?