如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第9章目录Java语言提供了丰富的网络编程类库,因此它非常适合用于网络编程,强大快捷的网络编程功能正是Java备受欢迎的主要原因之一。Java的网络功能由几个不同的包实现,基本的网络功能定义在java.net包中。其中的接口和类可以大致分为三部分:URL、URLConnection和Socket。本章将讨论如何使用这些类和接口进行网络编程,实现网络资源的访问和网络通信。9.1网络编程基础知识这四层结构中比较常见的协议有如下几种:1)IP协议2)TCP协议3)UDP协议4)HTTP5)FTP6)SMTP7)POP38)IMAPIP地址套接字(Socket)套接字由IP地址与端口组成。它既可以接收请求,也可以发送请求,因此利用它可以较为方便地编写网络上数据传输的程序。根据传输的数据类型不同,套接字可以分为面向连接的数据流套接字(StreamSocket)和无连接的数据报套接字(DatagramSocket)两种类型。其中,TCP套接字是面向连接的套接字的代表,UDP套接字是无连接的数据报套接字的代表。目录9.2IP地址及URL类9.2.1InetAddress类由于InetAddress类没有构造方法,所以也不能直接创建InetAddress对象。要创建该类的实例对象,可以通过该类的静态方法获得该对象。找不到本地机器的地址时,这些方法通常会抛出UnknownHostException异常,所以应该在程序中进行异常处理。java.net.InetAddress类的主要方法1)publicstaticInetAddressgetLocalHost()该方法返回一个InetAddress对象,这个对象包含了本地机的IP地址。当查找不到本地机的地址时,将会抛出一个UnknownHostException异常。2)publicstaticInetAddressgetByName(Stringhost)该方法返回一个由host指定的InetAddress对象,参数host可以是一个主机名,也可以是一个IP地址或者一个DNS域名。如果找不到指定的主机的IP地址,那么该方法将抛出一个UnknownHostException异常。3)publicstaticInetAddressgetByAddress(byte[]addr)根据给定的IP字节地址创建一个InetAddress对象的引用。如果addr是IPv4地址,则返回一个Inet4Address对象。如果addr是IPv6地址,则返回一个Inet6Address对象。如果返回的既不是4字节的也不是16字节的,那么方法将会抛出一个UnknownHostException异常。获得一个InetAddress对象后,就可以使用InetAddress类的getAddress()方法获得本机对象的IP地址(存放在字节数组中);使用getHostAddress()方法获得本机对象的IP地址;使用getHostName()方法获得主机名。4)publicstaticInetAddress[]getAllByName(Stringhost)在Internet上,可以用相同的名字代表一组计算机,如java.sun.com就可以对应3个不同的地址,在主机被访问时随机选择一个地址。getAllByName(Stringhost)用来获取具有相同名字的主机的地址对象,并存放在一个地址对象数组中。出错了同样会抛出UnknownException异常。5)publicSringgetHostAddress()该方法将IP地址以网络字节顺序的字节数组的形式返回。由于IPV4只有4个字节,IPV6有16个字节,如果需要知道数组的长度,可以用数组的length字段获得。6)publicSringgetHostName()getHostName()方法返回一个字符串形式的主机名字。如果被查询的机器没有主机名,或者如果使用了Applet,但是它的安全性却禁止查询主机名,则该方法就返回一个具有点分形式的数字IP地址。例9-1InetAddress类的getByName()方法的使用示例。//filename:InetAddressTest.javaimportjava.net.*;publicclassInetAddressTest{publicstaticvoidmain(String[]args){try{InetAddressaddress_1=InetAddress.getByName("www.yahoo.com.cn");System.out.println(address_1.toString());InetAddressaddress_2=InetAddress.