教学课件_面向IP层的类_InetAddress

上传人:xmg****18 文档编号:114458077 上传时间:2019-11-11 格式:PPT 页数:14 大小:814.50KB
返回 下载 相关 举报
教学课件_面向IP层的类_InetAddress_第1页
第1页 / 共14页
教学课件_面向IP层的类_InetAddress_第2页
第2页 / 共14页
教学课件_面向IP层的类_InetAddress_第3页
第3页 / 共14页
教学课件_面向IP层的类_InetAddress_第4页
第4页 / 共14页
教学课件_面向IP层的类_InetAddress_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《教学课件_面向IP层的类_InetAddress》由会员分享,可在线阅读,更多相关《教学课件_面向IP层的类_InetAddress(14页珍藏版)》请在金锄头文库上搜索。

1、面向IP层的类:InetAddress,java. net包中的主要的类,java. net包中的主要的类包括: 面向IP层的类:InetAddress 面向传输层的类: TCP协议相关类:Socket、ServerSocket UDP协议相关类:DatagramPacket、DatagramSocket、MulticastSocket 面向应用层的类:URL、URLConnection,InetAddress类,InetAddress类是Java的IP地址封装类,它不需要用户了解如何实现地址的细节。类头定义如下: public class InetAddress extends object

2、 implements Serializable 该类有两个字段:hostName(String)和address(int),即主机名和IP地址,这两个字段是不公开的,用户不能直接访问它们。 InetAddress类没有构造方法,因此不能使用new来构造一个InetAddress类对象。比如下面的做法就是错误的: InetAddress ia = new InetAddress (); 通常是用类中的静态方法来获取信息。常用的静态方法有以下3个。,InetAddress类常用的静态方法,public static InetAddress getLocalHost( ) throws Unkno

3、wnHostException 返回本地主机的InetAddress 对象,包含本地主机名和IP地址。 public static InetAddress getByName(String host) throws UnknownHostException 返回host所代表的网址的IP地址。host可以是机器名,也可以是IP地址或者DSN域名。 public static InetAddress getAllByName(String host) throws UnknownHostException 返回所有host代表的网址的IP地址。我们知道,在Internet上不允许有多台计算机共用

4、一个IP地址,但是可以用相同的名字代表一组计算机。给定一个主机名,InetAddress.getAllByName()会返回一个包含了与该主机名相对应的所有地址的数组 以上3个方法通常会产生UnknownHostException异常,应在程序中捕获处理。,InetAddress类的常用实例方法有以下3个,public byte getAddress( )方法: 返回调用该方法对象的Internet地址。 返回值为以网络字节为顺序的byte类型数组, 该数组共有4个元素。 public String getHostAddress( )方法: 返回与InetAddress对象相关的主机IP地址的

5、字符串。 public String getHostName( )方法: 返回与InetAddress对象相关的主机名的字符串。,getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。,例1:获取本机的IP地址(使用getLocalHost()方法),import .*; public class getLocalHostTest public static void main(String args) InetAddress myIP=null;

6、/创建inetAddress类的对象不用构造方法(不用new) try myIP=InetAddress.getLocalHost(); System.out.println(myIP); catch(UnknownHostException e) ,程序运行结果包含主机名,如果仅想获得IP地址或主机名,可用InetAddress类的实例方法getHostAddress( )和getHostName( ),例2:获取本机的IP地址(使用getLocalHost()、getHostAddress()、getHostName()方法),import .*; public class getLoca

7、lHostTest public static void main(String args) InetAddress myIP=null; try myIP=InetAddress.getLocalHost(); String localip=myIP.getHostAddress(); /得到主机IP地址 String localname=myIP.getHostName(); /得到主机名 System.out.println(myIP); System.out.println(“本机IP地址为:“+localip); System.out.println(“本机主机名为:“+localn

8、ame); catch(UnknownHostException e) ,import .*; public class getDNSIP public static void main(String args) InetAddress swjtu=null; try swjtu=InetAddress.getByName(“); catch(UnknownHostException e) System.out.println(swjtu); ,例3: 根据域名自动到DNS上查找IP地址(getByName()方法),例4 返回域名所代表的所有IP地址(getAllByName()方法),im

9、port .*; public class getAllIP public static void main(String args) InetAddress swjtu=null; try swjtu=InetAddress.getAllByName(“); catch(UnknownHostException e) for(int i=0 ; i swjtu.length ; i+) System.out.println( swjtui); ,例5: getLocalHost()和getAddress();,import .*; public class getAddresstTest p

10、ublic static void main(String args) InetAddress myIP=null; try myIP=InetAddress.getLocalHost(); byte localip1=myIP.getAddress(); /得到主机IP地址 for(int i=0;ilocalip1.length;i+) System.out.print( localip1i+“ “); catch(UnknownHostException e) getAddress()方法返回的byte数组是有符号的。在Java中byte类型的取值范围是-128127。如果返回的IP地址

11、的某个字节是大于127的整数,在byte数组中就是负数。,作业,编写图形界面的Application程序,包含一个TextField和一个Label。 TextField接受用户输入的主机名,Label把这个主机的IP地址显示出来。,getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址,而getAddress方法返回的是byte数组形式的IP地址。getAddress方法的定义如下: public byte getAddress() 这个方法返回的byte数组是有符号的。在Java中byte类型的取值范围是-1

12、28127。如果返回的IP地址的某个字节是大于127的整数,在byte数组中就是负数。由于Java中没有无符号byte类型,因此,要想显示正常的IP地址,必须使用int或long类型。下面代码演示了如何利用getAddress返回IP地址,以及如何将IP地址转换成正整数形式。 package mynet; import .*; public class MyIP public static void main(String args) throws Exception InetAddress address = InetAddress.getByName(“www.网址.net“); byte

13、 ip = address.getAddress(); for (byte ipSegment : ip) System.out.print(ipSegment + “ “); System.out.println(“); for (byte ipSegment : ip) int newIPSegment = (ipSegment 0) ? 256 + ipSegment : ipSegment; System.out.print(newIPSegment + “ “); 运行结果: -45 100 26 122 211 100 26 122 从上面的运行结果可以看出,第一行输出了未转换的IP地址,由于www.网址.net的IP地址的第一个字节大于127,因此,输出了一个负数。而第二行由于将IP地址的每一个字节转换成了int类型,因此,输出了正常的IP地址。,知识回顾Knowledge Review,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号