JavaSE 基础之InetAddress类

时间:2022-06-16 21:06:25

Java基础之InetAddress类

科普:
1、*域名:(1) 国家*域名:cn、us、jp……
(2) 国际通用(iTDs ): 工商企业:com
网络提供商:net
非赢利组织:org
firm:(公司单位)
store:(销售公司或者企业)
web:突出www活动单位
arts:突出文化、娱乐活动的单位
rec:突出消遣、娱乐活动的单位
info:提供信息服务单位

InetAddress 类

1、有一个构造函数,但不能通过该构造方法传递参数。通常称该类没有构造方法
InetAdress ia = InetAdress.getByName(host);

2、只能通过其成员方法来生成对象。
getLocalHost():==得到描述本地主机localhost的InetAddress对象==
getByName():==通过指定计算机名、域名得到InetAddress 对象==
getAllByName(): ==从DNS上得到该域名对应的所有IP地址。将返回一个InetAddress[]==
getByAddress(): ==通过IP地址创建InetAddress 对象。提供的IP地址必须是byte[] ,只是构造一个 InetAddress对象,不会验证正确与否==
getHostName():==获得主机名==
getAddress(): 获得字节数组形式的IP地址

3、需要使用try-catch-finally 捕捉异常

import java.net.* ;   // 用于网络编程-----引用 net 库
import java.util.*;

class demo_01{
/**
* 通过getLocalHost方法获得本地信息,
* 输出主机名称和IP地址
*/

public static void main(String[] args){
try{
/**获取 InetAddress 对象*/
InetAddress ia = InetAddress.getLocalHost();
System.out.println("ia:"+ia+"------------");
/**获取该对象的名称*/
System.out.println("ia.getHostName:"+ia.getHostName()+"------------");
/**获取IP地址,并且转换成int型
在 JAVA 中需要注意数据类型的符号问题;
在JAVA中 byte 类型是有符号的。且JAVA未提供无符号的byte类型
表示范围 -128 ~ 127
通常 对于一些 I/O 处理程序需要考虑无符号问题,通常的做法是:
int unsignedByte = signByte >=0 ? signedByte : signByte+256;
*/

byte[] ip = ia.getAddress();
for(int i=0;i<ip.length;i++ ){
int ips = (ip[i]>=0)?ip[i]:(ip[i]+256);//将byte 转换成 int
System.out.println("ia.getAddress:"+ia.getAddress()+"------------");
System.out.println(ips);
}
}
catch(Exception e){
System.err.println("获取本地信息失败!"+e.toString());
}finally{
}
}
}
import java.net.*;
import java.util.*;


class demo02_netWorkInterfaces{
/**获得本地所有的网卡信息。一台计算机至少有一个IPV4地址
* 即本地环回测试地址 127.0.0.1
*/


public static void main(String[] args){
/**构造 网络接口 类的枚举对象*/
Enumeration<NetworkInterface> nif = null;
try{
nif = NetworkInterface.getNetworkInterfaces();
while(nif.hasMoreElements()){
NetworkInterface ni = nif.nextElement();
System.out.println("ni.getdisplayName===网卡:"+ ni.getDisplayName());
System.out.println("ni.getName===名称:"+ni.getName());
Enumeration<InetAddress> ips = ni.getInetAddresses();
while(ips.hasMoreElements()){
System.out.println("IP:"+ips.nextElement().getHostAddress());
}
}
}catch(Exception e){
}finally{}
}
}
import java.net.*;
import java.util.*;
import java.io.*;
class demo03_CompInfo{
/**获取主机信息---*/
public static void main(String[] args){
String host = "localhost";
try{
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("输入网络地址:");
host = br.readLine();
}catch(Exception e){}
try{
InetAddress inet = InetAddress.getByName(host);
System.out.println("主机地址:"+inet.getHostAddress());
System.out.println("主机名称:"+inet.getHostName());
System.out.println("是否环回地址:"+inet.isLoopbackAddress());
}catch(Exception e){}
finally{}

}
}