第第第第12121212章章章章JavaJavaJavaJava的网络功能的网络功能的网络功能的网络功能主讲:程细柱主讲:程细柱主讲:程细柱主讲:程细柱韶关学院计算机科学学院韶关学院计算机科学学院韶关学院计算机科学学院韶关学院计算机科学学院12.1.112.1.112.1.112.1.1基本概念介绍�编写网络通信程序时,需要涉及编写网络通信程序时,需要涉及编写网络通信程序时,需要涉及编写网络通信程序时,需要涉及通信协议通信协议通信协议通信协议、机、机、机、机器的器的器的器的IPIPIPIP地址地址地址地址、、、、端口号端口号端口号端口号等。等。等。等。端口号端口号端口号端口号表示为一个二表示为一个二表示为一个二表示为一个二进制的进制的进制的进制的16161616位整数位整数位整数位整数,其范围为,其范围为,其范围为,其范围为0000~~~~65535655356553565535,其中,其中,其中,其中0000~~~~1023102310231023为系统所保留,专门用于那些通用的服务。为系统所保留,专门用于那些通用的服务。为系统所保留,专门用于那些通用的服务。为系统所保留,专门用于那些通用的服务。IPIPIPIP地址地址地址地址和和和和端口号端口号端口号端口号组成了组成了组成了组成了套接字套接字套接字套接字socketsocketsocketsocket。。。。�传输控制协议传输控制协议传输控制协议传输控制协议TCPTCPTCPTCP是在端点与端点之间建立持是在端点与端点之间建立持是在端点与端点之间建立持是在端点与端点之间建立持续的续的续的续的连接连接连接连接而进行通信。而进行通信。而进行通信。而进行通信。�利用利用利用利用UDPUDPUDPUDP协议进行数据传输时,需要将要传输协议进行数据传输时,需要将要传输协议进行数据传输时,需要将要传输协议进行数据传输时,需要将要传输的数据定义成的数据定义成的数据定义成的数据定义成数据报数据报数据报数据报((((DatagramDatagramDatagramDatagram),在数据报),在数据报),在数据报),在数据报中指明数据所要达到的端点,然后再将数据报中指明数据所要达到的端点,然后再将数据报中指明数据所要达到的端点,然后再将数据报中指明数据所要达到的端点,然后再将数据报发送出去。发送出去。发送出去。发送出去。java.netjava.netjava.netjava.net包�JavaJavaJavaJava为用户提供了十分完善的网络功能,这些功为用户提供了十分完善的网络功能,这些功为用户提供了十分完善的网络功能,这些功为用户提供了十分完善的网络功能,这些功能定义在能定义在能定义在能定义在java.netjava.netjava.netjava.net包中。如下表所示包中。如下表所示包中。如下表所示包中。如下表所示12.1.212.1.212.1.212.1.2使用InetAddressInetAddressInetAddressInetAddress�类类类类InetAddressInetAddressInetAddressInetAddress可以可以可以可以用于标识网络上的硬件资源用于标识网络上的硬件资源用于标识网络上的硬件资源用于标识网络上的硬件资源,,,,这个类这个类这个类这个类没有构造函数没有构造函数没有构造函数没有构造函数,因此不能用,因此不能用,因此不能用,因此不能用newnewnewnew来构造一来构造一来构造一来构造一个个个个InetAddressInetAddressInetAddressInetAddress实例。实例。实例。实例。�通常是用它提供的静态方法来获取,例如:通常是用它提供的静态方法来获取,例如:通常是用它提供的静态方法来获取,例如:通常是用它提供的静态方法来获取,例如:�publicstaticInetAddressgetByName(Stringhost);publicstaticInetAddressgetByName(Stringhost);publicstaticInetAddressgetByName(Stringhost);publicstaticInetAddressgetByName(Stringhost);�publicstaticInetAddressgetLocalHost();publicstaticInetAddressgetLocalHost();publicstaticInetAddressgetLocalHost();publicstaticInetAddressgetLocalHost();�publicstaticInetAddress[]getAllByName(StringpublicstaticInetAddress[]getAllByName(StringpublicstaticInetAddress[]getAllByName(StringpublicstaticInetAddress[]getAllByName(Stringhost);host);host);host);�其中,其中,其中,其中,hosthosthosthost可以是一台机器名,也可以是一个形可以是一台机器名,也可以是一个形可以是一台机器名,也可以是一个形可以是一台机器名,也可以是一个形如如如如““““%d.%d.%d.%d%d.%d.%d.%d%d.%d.%d.%d%d.%d.%d.%d””””的的的的IPIPIPIP地址或一个地址或一个地址或一个地址或一个DSNDSNDSNDSN域名。域名。域名。域名。查找IPIPIPIP地址示例�程序程序程序程序12-112-112-112-1::::查找查找查找查找IPIPIPIP地址地址地址地址importjava.net.importjava.net.importjava.net.importjava.net.****;;;;publicclassGetIP{publicclassGetIP{publicclassGetIP{publicclassGetIP{publicstaticvoidmain(Stringargs[]){publicstaticvoidmain(Stringargs[]){publicstaticvoidmain(Stringargs[]){publicstaticvoidmain(Stringargs[]){InetAddresshd=null;InetAddresshd=null;InetAddresshd=null;InetAddresshd=null;try{try{try{try{hd=hd=hd=hd=InetAddress.getByName(InetAddress.getByName(InetAddress.getByName(InetAddress.getByName(““““download.csdn.ndownload.csdn.ndownload.csdn.ndownload.csdn.net/user/cflynnet/user/cflynnet/user/cflynnet/user/cflynn””””););););}catch(}catch(}catch(}catch(UnknownHostExceptioneUnknownHostExceptioneUnknownHostExceptioneUnknownHostExceptione)))){{{{System.out.println(e);System.out.println(e);System.out.println(e);System.out.println(e);}}}}System.out.println(hd);System.out.println(hd);System.out.println(hd);System.out.println(hd);}}}}}}}}�执行程序执行程序执行程序执行程序GetIPGetIPGetIPGetIP后,可以得到下列信息:后,可以得到下列信息:后,可以得到下列信息:后,可以得到下列信息:download.csdn.net/user/cflynn/59.37.71.86download.csdn.net/user/cflynn/59.37.71.86download.csdn.net/user/cflynn/59.37.71.86download.csdn.net/user/cflynn/59.37.71.86获取本机IPIPIPIP地址示例�程序程序程序程序12-212-212-212-2::::获取本机获取本机获取本机获取本机IPIPIPIP地址地址地址地址importjava.net.importjava.net.importjava.net.importjava.net.****;;;;publicclassGetLocalHostTest{publicclassGetLocalHostTest{publicclassGetLocalHostTest{publicclassGetLocalHostTest{publicstaticvoidmain(String[]args){publicstaticvoidmain(String[]args){publicstaticvoidmain(String[]args){publicstaticvoidmain(String[]args){InetAddressmyIP=null;InetAddressmyIP=null;InetAddressmyIP=null;InetAddressmyIP=null;try{try{try{try{myIP=InetAddress.getLocalHost();myIP=InetAddress.getLocalHost();myIP=InetAddress.getLocalHost();myIP=InetAddress.getLocalHost();}catch(UnknownHostExceptione){}catch(UnknownHostExceptione){}catch(UnknownHostExceptione){}catch(UnknownHostExceptione){System.out.println(e);System.out.println(e);System.out.println(e);System.out.println(e);}}}}System.out.println(myIP);System.out.println(myIP);System.out.println(myIP);System.out.println(myIP);}}}}}}}}�执行程序执行程序执行程序执行程序GetIPGetIPGetIPGetIP后,可以得到下列信息:后,可以得到下列信息:后,可以得到下列信息:后,可以得到下列信息:Sally/192.168.0.100Sally/192.168.0.100Sally/192.168.0.100Sally/192.168.0.10012.212.212.212.2统一资源定位器�URLURLURLURL是是是是UniformResourceLocatorUniformResourceLocatorUniformResourceLocatorUniformResourceLocator((((统一资源定位器统一资源定位器统一资源定位器统一资源定位器)的)的)的)的缩写,它缩写,它缩写,它缩写,它表示表示表示表示InternetInternetInternetInternet上某一资源的地址上某一资源的地址上某一资源的地址上某一资源的地址。。。。�通过通过通过通过URLURLURLURL,就可以访问,就可以访问,就可以访问,就可以访问InternetInternetIntern