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公钥密码中服务 ...
随机推荐
- 【Mysql】Mysql修改Root密码
1.用命令编辑/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.cnf 或者 nano /etc/my.cnf 2.在[mysqld]下添加skip-gr ...
- SpringMVC系列(十二)自定义拦截器
Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口– preHandle():这个方法在业务处 ...
- 在命令行中运行JUnit测试
可以在Eclipse之外运行JUnit测试,使用org.junit.runner.JUnitCore类. 这个类提供了runClasses()方法,它允许运行一个或多个测试类.runClasses() ...
- tpshop防止sql注入补丁
本补丁 由 QQ 木偶人 提供 首先在 www\Application\Common\Common\function.php 文件添加一个方法 /** * 转换SQL关键字 * * @param ...
- 目标检测之rcnn---开启检测新高度优于dpm
http://www.cnblogs.com/louyihang-loves-baiyan/p/4839869.html http://www.cnblogs.com/louyihang-loves- ...
- Linux——ps(列出进程)
ps是Linux系统中用于查看进程状况的命令,用于显示当前系统中进程的快照.ps会显示部分当前活动的进程信息,不同于top指令,top指令会实时的更新所显示的进程动态. Linux的ps指令兼容了多种 ...
- 成都传智播客java就业班(14.04.01班)就业快报(Java程序猿薪资一目了然)
这是成都传智播客Java就业班的就业情况,很多其它详情请见成都传智播客官网:http://cd.itcast.cn?140812ls 姓名 入职公司 入职薪资(¥) 方同学 安**软件成都有限公司(J ...
- linux 上安裝lnmp
1.確保有一台服務器可以正常運行 2.熟練知道一些基本的命令 3.這裡我以lnmp集成環境為例 https://lnmp.org/install.html 4.安裝大約30分鐘左右 5.安裝完畢,訪問 ...
- Git 基础 - 远程仓库的使用
远程仓库的使用 要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某个项目时,需要管 ...
- jmm 和线程安全
Java的内存模型JMM Java的内存模型JMM(Java Memory Model)JMM主要是为了规定了线程和内存之间的一些关系.根据JMM的设计,系统存在一个主内存(Main Memory), ...