【Java网络编程】获得实验室局域网中所有开机主机名称和IP地址,InetAddress类,在java中如何获取IP地址的方法
获得实验室所有主机的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地址的方法相关推荐
- 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流
Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...
- Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例
Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...
- 【Java网络编程与IO流】Java之Java Servlet详解
Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...
- Java网络编程(八)—— 组播和MulticastSocket
Java网络编程(八)-- 组播和MulticastSocket 文章目录 Java网络编程(八)-- 组播和MulticastSocket 什么是组播 MulticastSocket类 总述 构造方 ...
- java网络编程 个人笔记 第二章 流
java网络编程 个人笔记 第二章 流 流 I/O介绍 java流式输入/输出原理 输入输出流分类 节点流和处理流 节点流的类型 处理流的类型 InputStream(输入流) InputStream ...
- java网络编程,通过TCP,Socket实现多对一的局域网聊天室
java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...
- 用java网络编程中的TCP方式上传文本文件及出现的小问题
自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文 ...
- java 密钥工厂 desede_20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...
- 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等
文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...
最新文章
- BZOJ1002 [FJOI2007]轮状病毒(最小生成树计数)
- 算了一挂,也不知准不准
- OPPM 一页纸项目管理 One-Page Project Management
- 手撕 CNN 经典网络之 AlexNet(理论篇)
- Linux make menuconfig查找并快速跳转指定驱动选项
- Request method 'GET' not supported解决方式
- 解析高校网络管理员如何制作网络电视墙
- 显示照片的二维直方图
- Atom编辑器有一个LF、CRLF的切换
- java把按钮和键盘对应_按键与按钮的区别?
- J2SE基础夯实系列之正则表达式Java
- ubuntu下安装php环境
- 等比数列求和公式的推导
- JavaScript 文件上传完整指南,附【图书中奖者名单】
- 英文电子书下载:salttiger.com
- MTK6580适应小分辨率
- java将Word转换成PDF
- html rfftq15.gif,STM32F4xx固件库
- R语言第一课:R和Rstudio
- 《网络基础学习之三》认识网线制作工具
热门文章
- 迈向阿尔茨海默病的无创脑刺激2.0时代
- 第二课学会组装计算机 教案,《计算机组装与维护第2章教案.doc
- 洪宗勝博士的教育翻轉大夢:用香蕉派翻转世界
- Laravel学习-文件上传
- java saas osgi_基于云计算Saas平台下的C2C大型网上商城(集UC聊天客户端+Extjs+Oracle+OSGI模型)...
- 面向教育行业的MDM(移动设备管理)解决方案
- 编写程序,求出并输出1000以内的所有的素数
- 咪咕mgv2000爱家tv、新烽火hg680-lc、cm211-1-zg、m304a-zn固件
- Harbor的部署和使用
- 交易开悟是什么体验?