Java网络编程之查找Internet地址
一、概述
连接到Internet上计算机都有一个称为Internet地址或IP地址的唯一的数来标识。由于IP很难记住,人们设计了域名系统(DNS),DNS可以将人们可以记忆的主机名与计算机可以记忆的IP地址联系在一起。通常一台主机映射一个IP地址。有时一个主机名映射多个IP。这时就由DNS负责随机选择一台机器来响应请求,例如业务流量很大的Web网站,它将负载分到多个系统上。
二、什么是IP地址?
IP地址是IP使用的32为或128位无符号数字,它是一种低级协议,UDP和TCP协议都是在它的基础上构建的。
1、地址类型
- 单播:单个接口的标识符,发送到单播地址的数据包被交付给由该地址标示的接口。
- 多播:一组接口(通常属于不同的节点)的标识符,发送到多播地址的数据包被交付给由该地址标示的所有接口。
2、IP范围
- 链接本地:地址设计用于在单个链接上寻址以解决自动地址配置、邻居发现或没有路由器时的问题。
- 站点本地:地址设计用于在不需要全局前缀时站点内部寻址。
- 全局地址:在Internet中是唯一的。
3、IP地址的文本表示形式
IP地址的文本表示形式是特定于地址系列的。
IPV4地址一般写为四个无符号字节,每个字节范围从0到255。这种方式又称为点分四段格式。eg:192.168.1.119。
三、InetAddress类
InetAddress类表示互联网协议(IP)地址,是Java对IP地址的高级表示。用于其他大多数网络类。
InetAddress类的实例包含IP地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。
1、构造InetAddress对象
InetAddress类没有公共构造函数,可以通过其静态方法返回适当初始化的InetAddress对象。
static InetAddress[] |
getAllByName(String host)
Given the name of a host, returns an array of its IP addresses, based on the configured name service on the system.
|
static InetAddress |
getByName(String host)
Determines the IP address of a host, given the host's name.
|
static InetAddress |
Returns the address of the local host.
|
ps:需要只指出的是,这些方法不只是使用它们的参数来设置内部字段,还需要进行网络连接来获取所需的所有信息。这个类的其他方法则主要使用上述方法提供的信息来工作。
由于DNS查找成本相对较高,InetAddress类缓存查找的结果,可以通过networkaddress.cache.ttl指定成功的DNS查找在Java缓存中保留的秒数。除了在InetAddress类中的本地化缓存,本地主机、本地域名服务器和Internet中其他地方的DNS服务器也会缓存各种查找结果。
2、类方法
boolean |
equals(Object obj)
Compares this object against the specified object.
|
byte[] |
getAddress()
Returns the raw IP address of this
InetAddress object. |
static InetAddress[] |
getAllByName(String host)
Given the name of a host, returns an array of its IP addresses, based on the configured name service on the system.
|
static InetAddress |
getByAddress(byte[] addr)
Returns an
InetAddress object given the raw IP address . |
static InetAddress |
getByAddress(String host, byte[] addr)
Creates an InetAddress based on the provided host name and IP address.
|
static InetAddress |
getByName(String host)
Determines the IP address of a host, given the host's name.
|
String |
getCanonicalHostName()
Gets the fully qualified domain name for this IP address.
|
String |
getHostAddress()
Returns the IP address string in textual presentation.
|
String |
getHostName()
Gets the host name for this IP address.
|
static InetAddress |
getLocalHost()
Returns the address of the local host.
|
static InetAddress |
getLoopbackAddress()
Returns the loopback address.
|
int |
hashCode()
Returns a hashcode for this IP address.
|
3、InetAddress示例代码
public class Demo1
{ public static void main(String[] args)
{
InetAddress ina;
try
{
ina = InetAddress.getLocalHost();
System.out.println(ina); System.out.println(ina.getAddress());//返回此 InetAddress 对象的原始 IP地址 System.out.println(ina.getHostAddress());// 返回 IP 地址字符串(以文本表现形式)。 System.out.println(ina.getHostName()); //获取此 IP 地址的主机名 System.out.println(ina.getLocalHost()); //返回本地主机
}
catch (UnknownHostException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
InetAddress ina1;
try
{
ina1 = InetAddress.getByName("192.168.1.119");
System.out.println(ina1);
}
catch (UnknownHostException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
InetAddress[] ina2;
try
{
ina2 = InetAddress.getAllByName("www.microsoft.com");
for(int i=0;i<ina2.length;i++)
System.out.println(ina2[i]);
} catch (UnknownHostException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
Java网络编程之查找Internet地址的更多相关文章
- java网络编程1-查询Internet地址
//经过dns查询后的结果会缓存起来,成功结果永久缓存,失败结果会缓存10s,通过下面的方法设置成功和失败的缓存时间 // 0为不缓存,-1为永不过期,其它单位为s Security.setPrope ...
- Java网络编程技术1
1. Java网络编程常用API 1.1 InetAddress类使用示例 1.1.1根据域名查找IP地址 获取用户通过命令行方式指定的域名,然后通过InetAddress对象来获取该域名对应的IP地 ...
- java 网络编程复习(转)
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...
- 20145225《Java程序设计》 实验五 Java网络编程及安全
20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...
- Java 网络编程----基本概念
网络现在是一个非常普遍的概念. 以下是维基百科上的解释: 网络一词有多种意义,可解作: 网络流也简称为网络(network).一般用于管道系统.交通系统.通讯系统建模. 有时特指计算机网络. 或特指其 ...
- 20145208 实验五 Java网络编程
20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...
- java网络编程serversocket
转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerS ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
- 20145220 实验五 Java网络编程
20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...
随机推荐
- js dom 创建table标签和子属性, 以及创建多选框
代码: <div class="Category"> <span id="Edit_headerTitle">Edit Categori ...
- 第三百五十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行、scrapy-splash、splinter
第三百五十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行.scrapy-splash. splinter 1.chrome谷歌浏览器无界面运行 chrome ...
- Win7-64位安装TensorFlow-GPU
1.查看电脑显卡 路径:计算机--属性--设备管理器-显示适配器 2.显卡(GPU)是否支持CUDN https://developer.nvidia.com/cuda-gpus 3.安装 1)CUD ...
- Throwable vs Exception
Throwable中的Error是不需要程序处理的. Exception是需要处理的.
- UFLDL教程练习(exercise)答案(2)
主成分分析与白化,这部分很简单,当然,其实是用Matlab比较简单,要是自己写SVD分解算法,足够研究好几个月的了.下面是我自己实现的练习答案,不保证完全正确,不过结果和网站上面给出的基本一致. 1. ...
- Thinkphp5笔记三:创建基类
做项目之前,一定要先部署要自己的"基类",非常的重要.打个比方,要访问会员中心相关的控制器,这类控制器是不是都要有一个“登录限制”,才让访问会员相关的控制器? 一.创建三大基类 原 ...
- tftp + bras
Ubuntu 12.04 网卡设置 开发板ip时192.168.0.2,设置的服务ip是192.168.0.1 因此在主机上/etc/network/interfaces添加如下内容 auto eth ...
- Robot Framework分层、开发系统关键字
开发系统关键字:http://www.cnblogs.com/fnng/p/4261293.html http://www.cnblogs.com/fnng/p/3969978.htm ...
- webService(SOAP)性能测试脚本
本文以天气预报的webService为基础进行学习 webService地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx ...
- Capability Model
Data Scientist, Analytics We’re looking for data scientists to work on our core and business product ...