一、IP地址
IP 地址是 IP 使用的 32 位或 128 位无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。IP 地址的体系结构是由 RFC 790:Assigned Numbers、 RFC 1918:Address Allocation for Private Internets、RFC 2365:Administratively Scoped IP Multicast 和 RFC 2373:IP Version 6 Addressing Architecture 定义的。InetAddress 的实例包含 IP 地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。
二、InetAddress类
此类表示互联网协议 (IP) 地址。
封装IP及DNS
主要掌握下面创建对象的方法,和几个常用方法,其他见API
package Inet;
/**
* InetAddress 封装IP及DNS
* 主要掌握下面创建对象的方法,和几个常用方法
*/
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
//使用InetAddress.getLocalHost()方法创建InetAddress对象
InetAddress addr = InetAddress.getLocalHost();
System.out.println(addr.getHostName()); //输出计算机名
System.out.println(addr.getHostAddress());
//根据域名得到InetAddress对象
addr = InetAddress.getByName("www.163.com");
System.out.println(addr.getHostName());
System.out.println(addr.getHostAddress());
//根据域名的到InetAddress对象
addr = InetAddress.getByName("61.135.253.15");
System.out.println(addr.getHostName()); //输出61.135.253.15
System.out.println(addr.getHostAddress()); //输出61.135.253.15
}
}
输入:
yangzheng-PC
192.168.84.1
www.163.com
60.174.243.162
三、InetSocketAddress类
此类实现 IP 套接字地址(IP 地址 + 端口号)。它还可以是一个对(主机名 + 端口号),在此情况下,将尝试解析主机名。如果解析失败,则该地址将被视为未解析 地址,但是其在某些情形下仍然可以使用,比如通过代理连接。
它提供不可变对象,供套接字用于绑定、连接或用作返回值。
package Inet;
/**
* 封装端口:在InetAddress的基础上+端口
* 主要掌握下面的两个构造函数,和两个方法
*/
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
public class InetSocketAddressDemo {
public static void main(String[] args) throws UnknownHostException {
InetSocketAddress addr = new InetSocketAddress("172.0.0.1", 9999);
addr = new InetSocketAddress(InetAddress.getByName("172.0.0.1"), 9999);
System.out.println(addr.getHostName());
System.out.println(addr.getPort());
}
}
输出:
172-0-0-1.lightspeed.brhmal.sbcglobal.net
9999