Java网络编程之InetAddress浅析

Java网络编程之InetAddress浅析

一、InetAddress综述

IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础。InetAddress是Java对IP地址的封装,几乎所有的Java网络相关的类都和它有关系,例如:serversocket,socket,URL,DataGramSocket,DataGRamPacket等。

InetAddress的实例对象包含以数字形式保存的IP地址,同时还可能包含主机名(如果使用主机名来获取InetAddress的实例,或者使用数字来构造,并且启用了反向主机名解析的功能)。InetAddress类提供了将主机名解析为IP地址(或反之)的方法。

InetAddress对域名进行解析是使用本地机器配置或者网络命名服务(如域名系统(Domain Name System,DNS)和网络信息服务(Network Information Service,NIS))来实现。对于DNS来说,本地需要向DNS服务器发送查询的请求,然后服务器根据一系列的操作,返回对应的IP地址,为了提高效率,通常本地会缓存一些主机名与IP地址的映射,这样访问相同的地址,就不需要重复发送DNS请求了。在java.net.InetAddress类同样采用了这种策略。在默认情况下,会缓存一段有限时间的映射,对于主机名解析不成功的结果,会缓存非常短的时间(10秒)来提高性能。

Java提供了InetAddress类来代表IP地址,InetAddress下还有2个子类:Inet4Address、Inet6Address,它们分别代表Internet Protocol version 4(IPv4)地址和Internet Protocol version 6(IPv6)地址,不过这两个子类不常用,这里也不在赘述。

此外,InetAddress类没有提供构造器,而是提供了如下两个静态方法来获取InetAddress实例:

getByName(String host):根据主机获取对应的InetAddress对象。

getByAddress(byte[] addr):根据原始IP地址来获取对应的InetAddress对象。

二、InetAddress数据结构

在这里插入图片描述
可见,InetAddress实现了Serializable接口,其对象可序列化

三、InetAddress方法摘要

在这里插入图片描述在这里插入图片描述在这里插入图片描述

四、代码示例

package me.net.ip;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * InetAddress用来代表IP地址 一个InetAddress对象代表一个IP地址
 *
 * @author Administrator
 *
 */
public class TestInetAddress {

    public static void main(String[] args) throws UnknownHostException {
    //如何创建一个InetAddress对象
    InetAddress inet = InetAddress.getByName("www.baidu.com");
    System.out.println(inet);
    System.out.println(inet.getHostName());
    System.out.println(inet.getHostAddress());
    //获取本机信息
    inet = InetAddress.getLocalHost();
    System.out.println(inet);
    System.out.println(inet.getHostName());
    System.out.println(inet.getHostAddress());
    }

}

转自 https://www.cnblogs.com/albertrui/p/8397600.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值