欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中的IP地址和InetAddress类使用详解

程序员文章站 2024-03-07 09:19:26
java语言的优势之一是java程序能访问网络资源。java提供一系列的类支持java程序访问网络资源。 tcp/ip协议和ip地址 为了进行网络通信,通信双方必须遵守...

java语言的优势之一是java程序能访问网络资源。java提供一系列的类支持java程序访问网络资源。
tcp/ip协议和ip地址

为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是tcp/ip协议,它是internet中各方所遵循的公共协议.tcp(transport control protocol)是一种传输控制协议,ip(internet protocol)是一种网际协议,tcp/ip代表这两个协议的。

tcp/ip分为四个层次:

  1. 网络接口层:负责接收和发送物理帧;
  2. 网络层:负责相邻节点之间的通信;
  3. 传输层:负责起点到终点的通信;
  4. 应用层:提供诸如文件传输、电子邮件等应用程序。

tcp协议将任何网络信息传输当作信息流。例如,机器a上的一个长报文发送到机器b,发送端a需要将数据分片,把一片片数据分别打包发送。数据包有一个头,指明该数据包发往何处、凶中数据在接收序列中所处的位置。每个包都按照ip地址提供的目的地从一个台机器传送到另一台机器,或从一个网络节点传送到另一个网络节点。在接收端b,这些数据包都能够按照正确的顺序重新组装起来。

tcp/ip协议是一个协议族,由一组协议组成,主要包含以下更具体的协议:
telnet(远程登录):允许一台计算机用户登录到另一台远程计算机上,使远程操作如同在本地计算机上操作一样。
ftp(file transfer protocol,文件传输协议):允许用户将远程主机上的文件复制到自己的计算机上。
smtp(simple mail transfer protocol,简单邮件传输协议):用于传输电子邮件。
nfs(network file server,网络文件服务器):使多台计算机透明地访问彼此的目录。
http:一种超文本传输协议,它是基于tcp/ip协议的,是www浏览器和服务器之间应用层的通信协议。http是一种通用、无状态、面向对象的协议。http会话(事务)包括四个步骤:连接(connection)、请求(request)、应答(response)和关闭(close)。

java语言可编写低层的网络应用。例如,传输文件,建立邮件控制器,处理网络数据等。java语言支持的internet协议有ftp、telnet、www等,支持网络通信的软件都在java.net包中,例如,java.net.ftp、java.net.www等。

ip地址用于指明因特网上的一台计算机在网络中的地址,用32位二进制代码表示一个网络地址。地址分a、b、c、d、e五类,常用的是a、b、c三类:
a(1.0.0.0-126.255.255.255):0,7位网络号,后24位为主机号;
b(128.0.0.0-191.255.255.255):10,14位网络号,后16位为主机号;
c(192.0.0.0-223.255.255.255):110,21位网络号,后8位为主机号;
d(224.0.0.0-239.255.255.255):1110,28位多点广播组标号;
e(240.0.0.0-254.255.255.255):1111,保留试验使用。

通常,ip地址用四段十进制数表示(8位一段)。例如:
    58.218.204.252
或用文字域名表示。例如:
    www.jb51.net
在因特网上,域名服务器(domain name server,dns)执行文字名称到二进制网络地址的映射。
inetaddress类

java.net包中有inetaddress类的定义,inetaddress类的对象用于ip地址和域名,该类提供以下方法:
getbyname(string s):获得一个inetaddress 类的对象,该对象中含有主机的ip地址和域名,该对象用如下格式表示它包含的信息:www.sina.com.cn/202.108.37.40;
string gethostname():获取inetaddress对象的域名;
string gethostaddress():获取inetaddress对象的ip地址;
getlocalhost():获得一个inetaddress对象,该对象含有本地机的域名和ip地址。

【例】 说明inetaddress类的用法的应用程序。程序演示如何获取www.weixueyuan.net的域名和ip地址。

import java.net.*;
class example10_1{
  public static void main(string args[]){
    try{ //以下代码通过域名建立inetaddress对象:
      inetaddress addr = inetaddress.getbyname(“www.jb51.net”);
      string domainname = addr.gethostname();//获得主机名
      string ipname = addr.gethostaddress();//获得ip地址
      system.out.println(domainname);
      system.out.println(ipname);
    }catch(unknownhostexception e){
      e.printstacktrace();
    }
  }
}

运行结果为:

www.jb51.net
58.218.204.252