预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共197页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第8章网络编程概述8.1概述图8.1TCP/IP协议的层次结构使用Java语言编写网络通信程序通常是在应用层,对某些特殊的应用可能需要直接基于传输层协议编程,一般无需关心网络通信的具体细节,特别是互联网层和网络接口层。传输层提供在源结点和目标结点的两个进程实体之间提供可靠的端到端的数据传输,TCP/IP模型提供了两种传输层协议,即传输控制协议TCP和用户数据报协议UDP。TCP协议是面向连接的,在传送数据之前必须与目标结点建立连接,数据传输结束后关闭连接。而UDP是一种无连接协议,可直接传输数据,无需事先建立连接,直接发送带有目标结点信息的数据报。不同的数据报可能经过不同的路径到达目标结点,到达时的顺序与出发时的顺序也可能不同。采用哪种传输层协议是由应用程序的需要决定的,如果可靠性更重要的话,用面向连接的协议会好一些。比如文件服务器需要保证数据的正确性和有序性,如果一些数据丢失了,系统的有效性将会失去。而有一些服务器是间歇性地发送一些数据块的,如果数据丢失,服务器并不需要再重新发送,因为当数据到达的时候,它可能已经过时了。确保数据的有序性和正确性需要额外的操作和存储空间,这将会降低系统的响应速率。传输层的上一层是应用层,应用层包括所有的高层协议。早期的应用层有远程登录协议(Telnet)、文件传输协议(FileTransferProtocol,FTP)和简单邮件传输协议(SimpleMailTransferProtocol,SMTP)等。目前使用最广泛的应用层协议是用于从Web服务器读取页面信息的超文本传输协议(HyperTextTransferProtocol,HTTP)。端口(Port)与IP地址一起为网络通信的应用程序之间提供一种确切的地址标识,IP地址标识了发送数据的目的计算机,而端口标识了将数据包发送给目的计算机上的哪一个应用程序,如图8.2所示。应用层协议通常采用客户/服务器模式,应用服务器启动后监听特定的端口,客户端需要服务时请求与服务器该端口建立连接。一些常用的应用服务都有缺省的端口(称为熟知端口),例如Web服务器缺省的端口号为80。图8.2端口与IP地址的标识作用8.1.2网络编程的基本方法Java语言专门为网络通信提供了软件包java.net。采用java.net包提供的API可以快速方便地开发基于网络的应用。java.net包对http协议提供了特别的支持。只需通过URL类对象指明图像、声音资源的位置,无需额外的工作,就可以轻松地从Web服务器上获取图像、声音,或者通过流操作获取HTML文档及文本等资源,并可以对获得的资源进行处理。在本书4.1节的案例中从Web服务器下载广告图片就采用了这种方法,可以看出,使用这种方法下载图像是相当简单的。java.net包还提供了对TCP、UDP协议套接字(Socket)编程的支持,可以建立用户自己的服务器,实现特定的应用。Socket是一种程序接口,最初由California大学Berkeley分校开发,是用于简化网络通信的一种工具,是UNIX操作系统的一个组成部分。现在Socket的概念已深入到各种操作环境,包括Java。8.2URL编程协议名用于指明获取资源所用的传输协议,例如http、ftp、gopher等;主机名指明资源所在的计算机,端口号指明服务器的端口号,对于常用的一些协议(如http、ftp等),如果不指明端口号,则使用该协议缺省的熟知端口;资源路径指明该资源在服务器上的虚拟路径。例如:http://java.sun.com/j2se/1.4.2/download.htmlhttp为协议名,java.sun.com为主机名称,使用缺省的端口80,/j2se/1.4.2/download.html为服务器上文件的虚拟路径。资源路径还可以包含HTML文件中的参考位置(或称为参考点),例如:http://home.netscape.com:80/home/white_paper.html#intro_1这里,intro_1为white_paper.html中的一个位置。上面定义的URL形式包含访问网络资源的完整路径,通常称为绝对URL。在HTML文档中通常还会使用相对URL。一个相对URL不包括协议或主机信息,用于指定与当前文档处于相同主机的HTML文档。相对URL可能包括相对路径的成员,也可能是URL片断。例如,在http://java.sun.com/j2se/1.4.2/download.html文档中相对URL:system-configurations.html表示资源http://java.sun.com/j2se/1.4.2/system-configurations.html。同样,相对URL:/j2se/1.