|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。
InetAddress类在收集API套接字编程中饰演了一个主要脚色。
参数传送给流套接字类和自寻址套接字类机关器或非机关器办法。InetAddress形貌了32位或64位IP地点,要完成这个功效,InetAddress类次要依托两个撑持类Inet4Address和Inet6Address,这三个类是承继干系,InetAddrress是父类,Inet4Address和Inet6Address是子类。
因为InetAddress类只要一个机关函数,并且不克不及传送参数,以是不克不及间接创立InetAddress对象,好比上面的做法就是毛病的:
InetAddressia=newInetAddress();
但我们能够经由过程上面的5个工场办法创立来创立一个InetAddress对象或InetAddress数组:
.getAllByName(Stringhost)办法前往一个InetAddress对象的援用,每一个对象包括一个暗示响应主机名的独自的IP地点,这个IP地点是经由过程host参数传送的,关于指定的主机假如没有IP地点存在那末这个办法将抛出一个UnknownHostException非常对象。
.getByAddress(byte[]addr)办法前往一个InetAddress对象的援用,这个对象包括了一个Ipv4地点或Ipv6地点,Ipv4地点是一个4字节数组,Ipv6地点是一个16字节地点数组,假如前往的数组既不是4字节的也不是16字节的,那末办法将会抛出一个UnknownHostException非常对象。
.getByAddress(Stringhost,byte[]addr)办法前往一个InetAddress对象的援用,这个InetAddress对象包括了一个由host和4字节的addr数组指定的IP地点,大概是host和16字节的addr数组指定的IP地点,假如这个数组既不是4字节的也不是16位字节的,那末该办法将抛出一个UnknownHostException非常对象。
.getByName(Stringhost)办法前往一个InetAddress对象,该对象包括了一个与host参数指定的主机绝对应的IP地点,关于指定的主机假如没有IP地点存在,那末办法将抛出一个UnknownHostException非常对象。
.getLocalHost()办法前往一个InetAddress对象,这个对象包括了当地机的IP地点,思索到当地主机既是客户程序主机又是服务器程序主机,为制止凌乱,我们将客户程序主机称为客户主机,将服务器程序主机称为服务器主机。
下面讲到的办法均提到前往一个或多个InetAddress对象的援用,实践上每个办法都要前往一个或多个Inet4Address/Inet6Address对象的援用,挪用者不必要晓得援用的子范例,相反挪用者可使用前往的援用挪用InetAddress对象的非静态办法,包含子范例的多态以确珍重载办法被挪用。
InetAddress和它的子范例对象处置主机名到主机IPv4或IPv6地点的转换,要完成这个转换必要利用域名体系,上面的代码树模了怎样经由过程挪用getByName(Stringhost)办法取得InetAddress子类对象的办法,这个对象包括了与host参数绝对应的IP地点:
InetAddressia=InetAddress.getByName("www.javajeff.com"));
一但取得了InetAddress子类对象的援用就能够挪用InetAddress的各类办法来取得InetAddress子类对象中的IP地点信息,好比,能够经由过程挪用getCanonicalHostName()从域名服务中取得尺度的主机名;getHostAddress()取得IP地点,getHostName()取得主机名,isLoopbackAddress()判别IP地点是不是是一个loopback地点。
List1是一段树模代码:
//InetAddressDemo.java
importjava.net.*;
classInetAddressDemo
{
publicstaticvoidmain(String[]args)throwsUnknownHostException
{
Stringhost="localhost";
if(args.length==1)
host=args[0];
InetAddressia=InetAddress.getByName(host);
System.out.println("CanonicalHostName="+
ia.getCanonicalHostName());
System.out.println("HostAddress="+
ia.getHostAddress());
System.out.println("HostName="+
ia.getHostName());
System.out.println("IsLoopbackAddress="+
ia.isLoopbackAddress());
}
}
当无命令行参数时,代码输入相似上面的了局:
CanonicalHostName=localhost
HostAddress=127.0.0.1
HostName=localhost
IsLoopbackAddress=true
InetAddressDemo给了你一个指定主机名作为命令行参数的选择,假如没有主机名被指定,那末将利用localhost(客户机的),InetAddressDemo经由过程挪用getByName(Stringhost)办法取得一个InetAddress子类对象的援用,经由过程这个援用取得了尺度主机名,主机地点,主机名和IP地点是不是是loopback地点的输入。
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak, |
|