Android网络编程开发基础知识总结(一):InetAddress类

简述:

要知道,ip地址是ip使用了32位(ipv4)和128位(ipv6)无符号数字,代表了每一台机械的在网络中的位置,即属于唯一标识符。属于网络中的传输层协议TCP/UDP的基础;在Java中,常用InetAddress类来对ip的封装,在Java.net包下许多类都涉及了InetAddress,包括了Socket,ServerSocket等。

InetAddress类详解:

InetAddress类的对象包含了以数字形式的ip地址主机名(当通过域名构造InetAddress对象并启动反向解析域名功能时候)。

InetAddress对域名的解析其原理是使用本地机器配置或者网络命名服务(如域名系统(DNS),或者网络信息服务(NIS))实现的。

对于DNS来说,通常本地机器向DNS服务器发生查询请求,服务器根据一系列操作,返回对应的IP地址,为了提高性能效率,本地通常会缓存主机名和ip地址,,当查询相同的ip地址时候,就无需再一次请求DNS服务器。对于Java.net.InetAddress也采用了相同策略,如果解析不成功的域名会被缓存以提高性能。

其中,InetAddress类还包含了两个子类:分别是Inet4AddressInet6Address他们分别代表ipv4地址和ipv6地址。

使用ip地址创建InetAddress对象(例如使用静态方法getByAddress(),getByName(),getAllByName())时,无需访问DNS服务器。所以DNS服务器域名查找工作由getHostName()完成,当IP地址不存在或者DNS服务器不允许对ip地址和域名映射的时候,则返回IP地址。

例如:InetAddres i=InetAddress.getByName(“127.0.0.1”)

使用域名创建InetAddress对象时候,使用getHostName()也无需访问DNS服务器,直接将域名调用给InetAddress对象。

使用getLocalHost() / getCanonicalHostName()创建对象:
getCanonicalHostName()和getLocalHost() 得到的是本地主机名字;

使用域名创建对象:
getByName(“域名”),创建对象时无需访问DNS服务器。

使用ip地址创建对象:
getCanonicalHostName()和getLocalHost() 此时返回的时主机名。

知识来源:
https://blog.csdn.net/xiaozhu0301/article/details/49205931

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值