java语言程序设计第11章.ppt





《java语言程序设计第11章.ppt》由会员分享,可在线阅读,更多相关《java语言程序设计第11章.ppt(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第11章章 Java网络编程网络编程 在Internet(互联网)被广泛使用的今天,网络编程显得日益重要。网络应用是Java语言取得成功的领域之一,它已经成为现在Internet上最流行的一种编程语言。Java语言的网络功能非常强大,其网络类库不仅使我们可以开发访问Internet应用层程序,还可以实现网络底层的通信。本章要点本章要点l11.1 网络基础网络基础l11.2 InetAddress编程编程l11.3 URL编程编程l11.4 Socket编程编程l11.5 数据报通信数据报通信l思考与练习思考与练习1111.1 网络基础网络基础 11.1.1 TCP/IP协议协议网络通信协议是
2、计算机间进行通信所要遵循的各种规则的集合。Internet的主要协议有:网络层的IP协议,传输层的TCP、UDP协议,应用层的FTP、HTTP、SMTP等协议。其中,TCP/IP(传输控制协议/网间协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则。TCP/IP网络参考模型包括四个层次:应用层、传输层、网络层、链路层。连接到TCP/IP网络中的每台计算机(或其他设备)都有唯一的地址,这就是IP地址。IP地址实质上是一个32位的整数,通常以“%d.%d.%d.%d”的形式表示,其中每个d是一个8位整数。在TCP/IP网络中,不同的机器之间进行通信时,数据的传输是由传输层控
3、制的,这包括数据要发往的目标机器及应用程序、数据的质量控制等。TCP/IP网络中最常用的传输协议TCP(Transport Control Protocol)和UDP(User Datagram Protocol)就属于这一层。11.1 网络基础网络基础 11.1.1 TCP/IP协议协议传输层通常以TCP和UDP协议来控制端点到端点的通信。用于通信的端点是由Socket来定义的,而Socket是由IP地址和端口号组成的。TCP是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础
4、上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。11.1 网络基础网络基础 11.1.2 通信端口通信端口一台机器只通过一条链路连接到网络上,但一台机器中往往有很多应用程序需要进行网络通信,如何区分呢?这就要靠网络端口号(port)了。端口号是一个标记机器的逻辑通信信道的正整数,端口号不是物理实体。IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的最后终结点,它是TCP和UDP的基础。IP协议使
5、用IP地址使数据投递到正确的计算机上,TCP和UDP协议使用端口号(port)将数据投递给正确的应用程序。端口号是用一个16位的整数来表达的,其范围为065535,其中01023为系统所保留,专门给那些通用的服务(well-known services),常见的有:http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口为23等等。因此,当我们编写通信程序时,应选择一个大于1023的数作为端口号,以免发生冲突。11.1 网络基础网络基础 11.1.3 URLURL是统一资源定位符(Uniform Resource Locator)的简称,它表示Internet上某一资源的地
6、址。Internet上的资源包括HTML文件、图像文件、声音文件、动画文件以及其他任何内容(并不完全是文件,也可以是一个对数据库的查询等)。通过URL,就可以访问Internet。浏览器或其他程序通过解析给定的URL就可以在网络上查找相应的文件或其他资源。一个URL包括两部分内容:协议名称和资源名称,中间用冒号隔开:协议名:/资源名如协议名称指的就是获取资源时所使用的应用层协议,如http,ftp,file等;资源名称则是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用。当然,并不是所有的URL都必须包含这些内容。一个完整的URL如下:http:/:80/home/white_p
7、aper.html#intro_1协议 主机域名(IP地址)端口号 目录文件名 HTML参考点 11.1 网络基础网络基础 11.1.4 客户机客户机/服务器模式服务器模式目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。11.1 网络基础网络基础 11.1.5 Java网络编程网络编程Java 通过前面介绍的流式输入/输出接口和增加在网络上建立输入
8、/输出对象特性这两个方法支持TCP/IP。Java支持TCP和UDP协议族。TCP用于网络的可靠的流式输入/输出。UDP支持更简单的、快速的、点对点的数据报模式。Java的网络编程分为三个层次:1最高一级的网络通信就是我们前面章节中讲的从网络上下载Applet。客户端浏览器通过HTML文件中的标记来识别Applet,并解析Applet的属性,通过网络获取Applet的字节码文件。2前面我们介绍了声音播放和图像显示,其中声音文件和图像文件的获取是次一级的通信。通过类URL的对象指明文件所在位置,并从网络上下载声音和图像文件。11.1 网络基础网络基础 11.1.5 Java网络编程网络编程3.最
9、低一级的通信是利用包中提供的类直接在程序中实现网络通信。针对网络通信的不同层次,Java提供的网络功能有四大类:InetAddress、URLs、Sockets、Datagram。(1)URLs:面向应用层。通过URL,Java程序可以直接送出或读入网络上的数据。(2)InetAddress:面向的是IP层。用于标识网络上的硬件资源。(3)Sockets和Datagram:面向的则是传输层。Sockets使用的是TCP协议,这是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道进行通信。Datagram则使用UDP协议,是另一种网络传输方式,它把数据的目的地记录在数据包中,然
10、后直接放在网络上。11.1 网络基础网络基础 11.1.5 Java网络编程网络编程Java网络编程中主要使用的包中的类有:面向IP层的类:InetAddress面向应用层的类:URL、URLConnectionTCP协议相关类:Socket、ServerSocketUDP协议相关类:DatagramPacket、DatagramSocket、MulticastSocket可能产生的异常:BindException、ConnectException、MalformedURLException、NoRouteToHostException、ProtocolException、SocketExce
11、ption、UnknownHostException、UnknownServiceException 11.2 InetAddress编程编程 无论你是在打电话、发送邮件或建立与Internet的连接,地址是基础。InetAddress 类用来封装IP地址和该地址的域名。InetAddress类可以用于标识网络上的硬件资源,它提供了一系列方法以描述、获取及使用网络资源。每个InetAddress对象包含了IP地址、主机名等信息。InetAddress类没有构造方法,因此不能用new来构造一个InetAddress实例。通常是用它提供的静态方法来获取:public static InetAddr
12、ess getByName(String host)host可以是一个机器名,也可以是一个形如“%d.%d.%d.%d”的四个十进制数的IP地址或一个DSN域名。public static InetAddress getLocalHost()public static InetAddress getAllByName(String host)这三个方法通常会产生UnknownHostException异常,应在程序中捕获处理。InetAddress 类也有一些非静态的方法,如本书表11-1所示。11.3 URL编程编程 11.2.1 创建创建URL对象对象URL类有以下几种方式创建URL对象:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言程序设计 11

限制150内