TCP/IP,传输控制协议/网间协议是Internet的主要协议,它定义了计算机和外设进行通信所使用的规则。作为一种成功的网络编程语言,Java为用户提供了十分完善的网络功能,比如获取网络上的各种资源,与服务器建立连接和通信,传递本地数据等,所有这些有关的功能都定义在java.net包中,比如在载入声音或者图片的时候,只要指定了数据的URL地址,就能够利用getAudioClip()和getImage()实现,这种方式是Java网络通信功能中最高级也是最简单的一种。

针对网络通信的不同层次,Java所能提供的网络功能按层次以及使用方法分为四大类: InetAddress,URL,Socket,Datagram。

InetAddress面向的是IP层,用于标识网络上的硬件资源。

URL面向应用层,可以通过URL的网络资源表达形式确定数据在网络中的位置,利用URL对象中提供的相关方法,直接读入网络中的数据,或者将本地数据传送到网络的另一端。

Socket面向传输层,使用的是TCP协议,Socket是指两个程序在网络上的通信连接,由于在TCP/IP协议下的客户/服务器软件通常使用Socket来进行信息交流,因此这种方法也是传统网络程序所经常用到的一种方式。

Datagram也面向传输层,使用的是UDP协议,是另一种网络传输方式,它把数据的目的地记录在数据包中,然后直接放在网络上。

使用InetAddress:

类InetAddress可以用于标识网络上的硬件资源,它提供了一系列的方法,用来描述,获取及使用网络资源。

InetAddress类没有构造函数,因此不能用new来构造一个InetAddress实例。通常是用它提供的静态方法来获取:

public static InetAddress getByName(String host);

其中,host可以是一台机器名,也可以是一个形如“%d.%d.%d.%d”的IP地址或一个DSN域名。另外两种方式为:

public static InetAddress getLocalHost();

public static InetAddress[] getAllByName(String host);

这三个方法通常会产生UnknownHostException异常,应在程序中捕获处理。下面是InetAddress类的几个主要方法,通过上述方法获得InetAddress类的实例后就可以使用。

public byte[] getAddress()–获得本对象的IP地址(存放在字节数组中);

public String getHostAddress()–获得本对象的IP地址 “%d.%d.%d.%d”

public String getHostName()–获得本对象的机器名。

接下来演示Java如何根据域名自动到DNS(域名服务)上查找IP地址,其中与DNS服务器的连接只有一行代码。

package javaapplication24;
/**
*
* @author mjd
*/
import java.net.*;
public class GetIp {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
InetAddress hd = null;
try{
hd = InetAddress.getByName(“www.sau.edu.cn”);
}catch(UnknownHostException e){}
System.out.println(hd);
}
}

Java用netty获取域名的IP java通过域名获取ip_java localhost 域名

执行GetIP后,可以得到该地址信息。

通过InetAddress,可以获取本机的IP地址:

package getlocalhost;
/**
*
* @author mjd
*/
import java.net.*;
public class GetLocalHost {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
InetAddress myIP = null;
try{
myIP = InetAddress.getLocalHost();
}catch(UnknownHostException e){}
System.out.println(myIP);
}
}

Java用netty获取域名的IP java通过域名获取ip_java localhost 域名

可以得到本机的IP地址。