Java 实用程序设计(西电版)第11章 Java网络程序设计.ppt_第1页
Java 实用程序设计(西电版)第11章 Java网络程序设计.ppt_第2页
Java 实用程序设计(西电版)第11章 Java网络程序设计.ppt_第3页
Java 实用程序设计(西电版)第11章 Java网络程序设计.ppt_第4页
Java 实用程序设计(西电版)第11章 Java网络程序设计.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、,第 11 章 Java 网络程序设计,11.1 网络程序设计概述 11.2 有连接的Socket通信 11.3 无连接的Socket通信 11.4 URL通信,11.1 网络程序设计概述Internet上的通信协议是以TCP/IP协议簇为基础的。TCP/IP协议簇通常分为4层:网络接口层、网络层、传输层和应用层,如图11-1所示。,图11-1 TCP/IP协议簇的4层模型,11.2 有连接的Socket通信有连接的Socket通信主要使用包中的Socket类和ServerSocket类,Socket类的对象主要用于标识一个通信Socket连接的客户端和服务器端,而ServerSocket类的

2、对象主要用于监听客户端的连接并建立通信Socket连接。,1. IP地址类InetAddressInetAddress类在包中,用来定义一个IP地址。该类能够完成解析IP地址、查询主机名等功能。InetAddress类没有public的构造方法,一般需要通过调用该类的静态方法返回具体的InetAddress对象。InetAddress的主要接口方法及其含义如表11-1所示。,2. 有连接的通信模型在Java中,有连接的通信采用流式I/O模型,通信模型见图11-2。客户端Socket的典型构造方法形如:Socket(InetAddress address,int port ,InetAddres

3、s localAddr,int localPort)或 Socket(String host,int port ,InetAddress localAddr,int localPort),图11-2 有连接的客户端/服务器通信模型,其中,address为远端IP,port为远端端口号,host为远端主机名,可选的localAddr为本地IP地址,可选的localPort为与当前Socket绑定的本地端口号。Socket类的主要接口方法及其含义如表11-2所示。ServerSocket的构造方法形如:ServerSocket(int port ,int backlog),3. 有连接的通信示例在

4、例11-3中,TCPClient与TCP-Server进行有连接的通信。在连接建立后,双方各自获得对方的IP地址字符串和端口号并在控制台显示。在获得各自I/O流之后,TCPClient接受从键盘输入的语句,并发送给TCPServer。TCPServer接收到消息后,判断其是否为“quit”命令,如果不是,则将收到的消息显示在控制台。此后,TCPServer在收到的消息之前加上字符串“Server reply:”之后,发送回TCPClient。TCPClient在接收到消息后在控制台将消息打印出来。,4. Socket选项Socket类还有一些与Socket选项相关的接口方法,其中的一些主要方法

5、及含义见表11-3。,11.3 无连接的Socket通信无连接的Socket通信主要使用包中的DatagramSocket类,而被发送的数据报则是DatagramPacket类的对象。数据报是一种在网络上独立传播的包含两端地址信息的消息。数据报无法保证消息的可靠到达和及时到达,与面向连接的通信方式相比,服务质量较差但开销较小。对于不需要高质量通信服务的应用程序来说,使用无连接的数据报通信方式是简便易行的。,1. DatagramPacket类创建DatagramPacket的目的可能有两个:使用UDP发送数据到远端机器;使用UDP从远端机器接收数据。DatagramPacket的构造方法至少都

6、包含两个参数,其中一个是字符数组参数,用于存储UDP包的内容,另一个是数据包的长度。DatagramPacket的不同构造方法可用于发送和接收的不同场景。当构造的DatagramPacket用于接收UDP包时,则应使用以下构造方法:DatagramPacket(byte buffer,int length),其中,buffer为存放接收到的数据报的字节数组,length为接收数据的长度。当构造的DatagramPacket用于发送UDP包到一个远程主机时,则应使用以下构造方法:DatagramPacket(byte buffer,int length,InetAddress dest_addr

7、,int dest_port)其中,buffer中保存用于填充数据报的内容,length为数据长度,dest_addr为目的主机地址,dest_port为目的端口地址。DatagramPacket类的主要接口方法及其含义如表11-4所示。,2. 无连接的通信模型无连接的通信模型相比有连接的通信模型来说更为简单,其通信模型如图11-3所示。在无连接通信过程中,数据收发的主体是DatagramSocket类的对象实例。服务器和客户端首先均应创建DatagramSocket用以发送或接收DatagramPacket,DatagramSocket的典型构造方法为:DatagramSocket()或 D

8、atagramSocket(int port),图11-3 无连接的客户端/服务器通信模型,3. 无连接的通信示例以下通过一个例子说明无连接通信的基本方法。在例11-4中,UDPServer首先创建一个接收数据报的DatagramPacket,接收UDPClient发送的空数据报,获得UDPClient的IP地址和端口号。然后,UDPServer从控制台接收一句输入,将其转化为字节数组,并创建用于发送的DatagramPacket,发送回UDPClient。UDPClient在收到数据报后在控制台上打印其内容。,11.4 URL通信基于Socket的通信方式允许用户设计自己的应用层协议,实现更

9、为广泛和灵活的应用程序。而在实际应用中,很多时候利用已有的应用层通信协议已经足够程序员解决问题。例如当我们希望访问互联网上的一些资源时,可以直接使用HTTP和FTP。这时,可以直接使用基于URL的通信方式。,统一资源定位符(Uniform Resource Locator,URL)是互联网上资源的统一地址形式,URL可以指向互联网上的文件、web站点、ftp站点、新闻组、E-mail地址等资源。使用URL访问网络资源时,只需要在URL中标识清楚访问资源使用的应用层协议,而不再需要考虑这些协议的具体处理过程。URL通常是由一个字符串描述的,其基本形式如下:协议标识:/主机名:端口号路径名#引用,1. URL类在Java中,URL由包中的URL类表示。URL类的构造方法的一般形式主要有以下两种:URL(String protocol,String host,int port, String file)或 URL(URL context, String spec),2. 基于URL的网络资源检索若想要读取URL所指向的网络资源,可以采用两种方式:直

温馨提示

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

评论

0/150

提交评论