第16章 网络程序设计_第1页
第16章 网络程序设计_第2页
第16章 网络程序设计_第3页
第16章 网络程序设计_第4页
第16章 网络程序设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第16章网络程序设计Java成功应用的一个重要领域是网络。为了让Java程序员能够方便地进行网络程序设计,SUN公司在JDK中加入了大量和网络相关的类,将多种Internet协议封装在这些类中。相比其它的编程语言,利用Java编写网络程序更为容易。Page

3构建网络是为了实现通信,不同计算机之间通信必须基于一定的标准。网络协议就是计算机通信双方在通信时必须遵循的一组规范。

16.1与网络相关的常用术语

TCP/IP协议(TransmissionControlProtocol/InternetProtocol)叫做传输控制/网际协议,又叫网络通讯协议。Page

4在因特网上,每一台主机都有一个惟一的IP地址,以区别网络上的其它计算机。该地址由一个叫“IANA”(InternetAssignedNumbersAuthority,互联网网络号分配机构)的组织来管理。

16.1与网络相关的常用术语

IP地址是一种层次型地址,由网络号和主机号组成,如图16.1所示。图16.1IP地址的构成点分十进制记法IPv4IPv6Page

5由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。

16.1与网络相关的常用术语

每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。Page

6由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。

16.1与网络相关的常用术语

每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。域名不能直接被网络设备所识别,需要由域名服务器(DNS)转换成为IP地址才能访问。Page

7从广义上讲,服务器是指网络中能对其它机器提供某些服务的计算机系统(如果一个PC对外提供ftp服务,也可以叫服务器)。

16.1与网络相关的常用术语

从狭义上讲,服务器是专指某些高性能计算机,能通过网络,对外提供服务。站在Java程序员的角度来看,一台服务器必须要侦听其它机器建立连接的请求,并做出应答。Page

8与服务器相对应,在网络上请求服务的机器就被称为客户机。

16.1与网络相关的常用术语

通常,它会试着与一台服务器建立连接,一旦连接好,就变成了一种双向通信。无论对于客户机还是服务器,连接就成了一个I/O数据流对象,这时可以如同普通文件那样对待两台连接上的计算机。Page

9套接字(Socket)是TCP/IP中的基本概念,它负责将TCP/IP包发送到指定的IP地址。

16.1与网络相关的常用术语

可以看成是在两个程序进行通信连接中的一个端点,一个程序将信息写入Socket中(类似于插座),该Socket将这段信息发送到到另一个Socket中(类似于插头),使这段信息能够传送到其它程序。这两端的程序可以是在一台计算机上,也可以在因特网的远程计算机上。Page

10计算机“端口”是英文port的意译,可以认为是计算机与外界通讯交流的出口。

16.1与网络相关的常用术语

两台计算机通信时,需要通过指定的端口传递信息。通常,每个服务都同一个特定的端口编号关联在一起。客户程序必须事先知道所需服务的端口号。硬件领域的端口和软件领域的端口端口号可以是0-65535之间的任意一个整数。Page

1116.1.8URLURL(UniformResoureLocator:统一资源定位器)表示因特网上某一资源的地址

16.1与网络相关的常用术语

从左到右由下述部分组成:Internet资源类型(scheme):指出WWW客户程序用来操作的工具。如“http://”表示WWW服务器,“ftp://”表示FTP服务器,“gopher://”表示Gopher服务器。服务器地址(host):指出WWW页所在的服务器域名。端口(port):对某些资源的访问来说,需给出相应的服务器提供端口号。路径(path):指明服务器上某资源的位置(其格式与unix系统中的格式一样,通常由“目录/子目录/文件名”这样结构组成)。路径并非总是必要的。例如:80/domain/index.htm就是一个典型的URL地址,而则是一个简化的URL地址。Page

12InetAddress类是IP地址封装类,同时它也是一个比较奇怪的类——没有公共的构造方法,程序员只能利用该类的一些静态方法来获取对象实例,然后再通过这些对象实例来对IP地址或主机名进行处理。

16.2InetAddress类使用示例

该类常用的一些方法有:pulicstaticInetAddressgetByName(Stringhostname):根据给定的主机名创建一个InetAddress对象,可用来查找该主机的IP地址。publicstaticInetAddressgetByAddress(byte[]addr):根据给定的IP地址创建一个InetAddress对象,可用来查找该IP对应的主机名。publicStringgetHostAddress():获取IP地址。publicStringgetHostName():获取主机名。Page

13

16.2InetAddress类使用示例

编制一个小程序,该程序的功能是:获取用户通过命令行方式指定的域名,然后通过InetAddress对象来获取该域名对应的IP地址。当然,程序运行时,需要计算机正常连接到Internet上。【例16.1】根据域名查找IP地址//文件名GetIP.java,程序编号16.1import.*;publicclassGetIP{publicstaticvoidmain(String[]args){try{InetAddressad=InetAddress.getByName(args[0]);//用getHostAddress()方法获取指定对象的IP地址System.out.println("IP地址为:"+ad.getHostAddress());}catch(UnknownHostExceptionel){el.printStackTrace();}}}Page

15

16.2InetAddress类使用示例

程序中的InetAddress.getByName()方法返回一个InetAddress对象,它其中的参数可以是IP地址或是域名。这里用args[0]作为参数,要求用户在运行时,输入一个域名作为参数(关于命令行参数,请回顾3.8节),比如想获取网易的IP地址,就应该这样输入:javaGetIP当网络有故障时,该方法会抛出UnknowHostException异常,需要程序员捕获。如果需要获取本机IP地址,则要使用静态的getLocalHost()方法【例16.2】获取本机IP地址Page

16

16.2InetAddress类使用示例

//文件名GetMyIP.java,程序编号16.2import.*;publicclassGetMyIP{publicstaticvoidmain(String[]args){try{System.out.println("本机IP为:"+InetAddress.getLocalHost());}catch(UnknownHostExceptionel){el.printStackTrace();}}}运行时,只要输入:javaGetMyIP就可以获取本机的IP地址了Page

17

16.3URL类和URLConnection类的使用

IP地址惟一标识了Internet上的计算机,而URL则标识了这些计算机上的资源。一般情况下,URL是一个包含了传输协议、主机名称、文件名称等信息的字符串,程序员处理这样一个字符串时比较繁琐。为了方便程序员编程,JDK中提供了URL类,该类的全名是.URL,有了这样一个类,就可以使用它的各种方法来对URL对象进行处理。Page

18URL有6种构造方法,本例中使用了最常用的绝对路径构造方法,该方法的原型是:

16.3URL类和URLConnection类的使用

publicURL(Stringspec)throwsMalformedURLException;其中的参数spec是一个完整的URL字符串(必须要包含传输协议),例如:URLracehtml=newURL("http://xys.freedns.us/index.html");注意:该方法会抛出MalformedURLException异常,需要在程序中捕获。利用URL类和JEditorPane类编写一个非常简单的浏览器Page

19

16.3URL类和URLConnection类的使用

要显示网页的内容,需要用到javax.swing包中的JEditorPane类。图16.2就是利用这两个类编制的程序界面。图16.2一个简单的浏览器这个程序的交互界面只有两个主要控件:一个JTextField和一个JEditorPane。程序代码如下Page

20这个程序中,由于JEditorPane功能比较弱,无法执行网页中JavaScript/VBScript等脚本语言,更无法执行ActiveX控件,所以只能用于一些静态网页的显示。点此查看源代码MyBrowser.javaPage

21URLConnection类提供了以下方法返回输入/输出流,通过它们可以与远程对象进行通信:上面的例子中,利用URL配合JEditorPane类可以显示网页。但对于某些文件,例如.rar文件,并不需要显示出来,而是要下载它到本地机器上,这时就不能再使用JEditorPane类的setPage方法,而需要使用URLConnection类。publicInputStreamgetInputStream():从打开的连接中返回一个输入流,以便读入数据publicOutputStreamgetOutputStream():从打开的连接中返回一个输出流,以便写出数据Page

22

16.3URL类和URLConnection类的使用

【例16.4】文件下载示例(DownFile.java)这个程序主要是为了演示URLConnection的使用,所以写的很简单,使用者无法选择要保存的文件名,读者可以将它改写得更为实用一点。Page

23

16.4Socket的使用

Socket是TCP/IP中的基本概念,它负责将TCP/IP包发送到指定的IP地址。当两个程序需要通信时,可以使用Socket类建立套接字连接呼叫的一方称为客户机,负责监听的一方称为服务器服务器所用的套接字是ServerSocket,客户机所用的套接字是Socket。注意:客户机和服务器必须使用同一个指定的端口号。一个典型的客户机/服务器对话过程如下:(1)服务器监听指定端口的输入;(2)客户机发出一个请求;(3)服务器接收到这个请求;(4)服务器处理这个请求,并把结果返回给客户机;(5)客户机接收结果,做出相应处理。Page

24Java中提供了Socket类供程序员来创建对象,建立套接字。表16.1Scocket中的常用方法Page

25

16.4Socket的使用

Socket类没有定义数据的输入和输出方法在使用Socket对象时,必须使用getInputStream()方法获得输入流,然后用这个输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论