JAVA语言项目11JAVA网络编程.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA语言项目11JAVA网络编程.ppt》由会员分享,可在线阅读,更多相关《JAVA语言项目11JAVA网络编程.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java语言和计算机网络紧密相连,语言和计算机网络紧密相连,Java语言就是伴随着互语言就是伴随着互联网的发展而不断成熟的。联网的发展而不断成熟的。Java最出色的一个特点就是对网最出色的一个特点就是对网络编程提供了强大的支持。络编程提供了强大的支持。网络上计算机之间的通信实质上就是计算机上的应用程序之网络上计算机之间的通信实质上就是计算机上的应用程序之间进行通信。网络程序设计的目的就是直接或间接地通过网间进行通信。网络程序设计的目的就是直接或间接地通过网络协议与其他计算机的相关程序进行数据传输,从而实现网络协议与其他计算机的相关程序进行数据传输,从而实现网络通信。网络程序设计通常涉及一个服务
2、器和一个或多个客络通信。网络程序设计通常涉及一个服务器和一个或多个客户机。客户机向服务器发送请求,服务器响应请求。因此,户机。客户机向服务器发送请求,服务器响应请求。因此,本帝通过一个本帝通过一个Server-Client模型的网络聊天程序的项日模型的网络聊天程序的项日案例开发,来了解案例开发,来了解Java的网络编程知识。的网络编程知识。下一页项目项目11 Java网络编程网络编程项目项目11 Java网络编程网络编程11.1 项目概述项目概述11.2 项目目的项目目的11.3 项目支撑知识项目支撑知识11.4 项目实施项目实施11.5 项目总结项目总结11.6 扩展演练扩展演练11.1 项
3、目概述项目概述本项目说明如何利用本项目说明如何利用Socket开发一个开发一个Server-Client模型模型的网络聊天程序。客户端向服务器发送请求,尝试服务器建的网络聊天程序。客户端向服务器发送请求,尝试服务器建立连接,服务器可能接受或拒绝请求。一旦建立连接,客户立连接,服务器可能接受或拒绝请求。一旦建立连接,客户端和服务器就可以进行通信。端和服务器就可以进行通信。返回11.2 项目目的项目目的.了解网络编程原理。了解网络编程原理。.理解理解TCP/IP体系结构。体系结构。.掌握掌握InetAddress类、类、Socket类及类及ServerSocket类等类等的使用。的使用。.掌握基于
4、掌握基于TCP协议的协议的Socket网络编程。网络编程。返回11.3 项目支撑知识项目支撑知识项目开发背景知识项目开发背景知识1 网络编程概述网络编程概述网络编程中有两个主要的问题,一个是如何准确地定位网络网络编程中有两个主要的问题,一个是如何准确地定位网络上一台或多台主机及在主机上运行的应用程序,另一个就是上一台或多台主机及在主机上运行的应用程序,另一个就是找到主机及应用程序后如何可靠高效地进行数据传输。找到主机及应用程序后如何可靠高效地进行数据传输。1.网络通信基础网络通信基础下一页返回11.3 项目支撑知识项目支撑知识网络通信是采用网络协议实现计算机之间的数据交换。所谓网络通信是采用网
5、络协议实现计算机之间的数据交换。所谓网络协议是指通信双方约定好的规则集合,通常使用网络协议是指通信双方约定好的规则集合,通常使用TCP/IP协议。在协议。在TCP/IP体系结构中网络层主要负责网络体系结构中网络层主要负责网络主机的定位和数据传输的路由,由主机的定位和数据传输的路由,由IP地址可以唯一地确定地址可以唯一地确定Internet上的一台主机。而传输层则提供面向应用的可靠的上的一台主机。而传输层则提供面向应用的可靠的或非可靠的数据传输机制,来保证应用程序的正常运行。或非可靠的数据传输机制,来保证应用程序的正常运行。先了解以下几个概念。先了解以下几个概念。上一页 下一页返回11.3 项目
6、支撑知识项目支撑知识IP地址地址:即给每个连接在即给每个连接在Internet上的主机分配一个在全世上的主机分配一个在全世界范围唯一的界范围唯一的32bit地址。地址。IP地址的结构使在地址的结构使在Internet上上寻址很方便。寻址很方便。IP地址通常用更直观的、以圆点分隔号的地址通常用更直观的、以圆点分隔号的4个个十进制数字表示,每一个数字对应于十进制数字表示,每一个数字对应于8个二进制的比特串。个二进制的比特串。端口号端口号(Port Number):网络通信时同一机器上的不同进程网络通信时同一机器上的不同进程的标识,其中的标识,其中11024为系统保留的端口号。每一项标准的为系统保留
7、的端口号。每一项标准的Internet服务都有自己独特的端口号,该端口在所有的计算服务都有自己独特的端口号,该端口在所有的计算机上均相同。例如,机上均相同。例如,ftp具有默认端口具有默认端口21,http具有默认端具有默认端口口80。服务类型。服务类型(Service):网络的各种服务。例如,超文网络的各种服务。例如,超文本传输协议本传输协议(HTTP),文件传输协议,文件传输协议(FTP),远程登录,远程登录(Telnet),简单邮件传输协议,简单邮件传输协议(SMTP)。上一页 下一页返回11.3 项目支撑知识项目支撑知识套接字套接字(Socket):当一台主机上有多个进程同时进行通信,
8、当一台主机上有多个进程同时进行通信,如何区别从网络中传递来的数据是一个问题,解决的方法就如何区别从网络中传递来的数据是一个问题,解决的方法就是在传输层提供向上服务的端口号。端口号其实标识了运行是在传输层提供向上服务的端口号。端口号其实标识了运行在某台计算机上的某个进程,所以一个在在某台计算机上的某个进程,所以一个在Internet上运行的上运行的应用程序可以用应用程序可以用IP地址和端口号进行标识,这就是套接字地址和端口号进行标识,这就是套接字(Socket)。传输层以实现计算机系统端到端的通信为日的,该层提供了传输层以实现计算机系统端到端的通信为日的,该层提供了两种实现端到端通信的方法,即面
9、向连接方法和无连接方法。两种实现端到端通信的方法,即面向连接方法和无连接方法。这两种方法对应着两个主要协议,一个是这两种方法对应着两个主要协议,一个是TCP (Transfer Control Protocol)协议,另一个是协议,另一个是UDP (User Datagram Protocol)协议。协议。上一页 下一页返回11.3 项目支撑知识项目支撑知识TCP是一种面向连接的保证可靠传输的协议。通过是一种面向连接的保证可靠传输的协议。通过TCP协议协议实现的传输,得到的是一个顺序的无差错的数据流。发送方实现的传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个和接收方的成对的
10、两个socket之间必须建立连接,以便在之间必须建立连接,以便在TCP协议的基础上进行通信,当一个协议的基础上进行通信,当一个socket(通常都是通常都是server socket)等待建立连接时,另一个等待建立连接时,另一个socket可以要可以要求进行连接,一旦这两个求进行连接,一旦这两个socket连接起来,它们就可以进行连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。双向数据传输,双方都可以进行发送或接收操作。UDP是一种无连接的协议,每个数据报都是一个独立的信息,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址和目的地址,它通过网络上任何可能的
11、路包括完整的源地址和目的地址,它通过网络上任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的,即及内容的正确性都是不能被保证的,即UDP协议是不可靠的。协议是不可靠的。上一页 下一页返回上一页11.3 项目支撑知识项目支撑知识使用使用UDP时,每个数据报中都给出了完整的地址信息,因此时,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。对于无需要建立发送方和接收方的连接。对于TCP协议,由于它协议,由于它是一个面向连接的协议,在是一个面向连接的协议,在socket之间进行数据传
12、输之前必之间进行数据传输之前必然要建立连接,所以在然要建立连接,所以在TCP中多了一个连接建立的时间。中多了一个连接建立的时间。使用使用UDP传输数据时是有大小限制的,每个被传输的数据报传输数据时是有大小限制的,每个被传输的数据报必须限定在必须限定在64 KB之内。而之内。而TCP没有这方面的限制,一旦连没有这方面的限制,一旦连接建立起来,双方的接建立起来,双方的socket就可以按统一的格式传输大量的就可以按统一的格式传输大量的数据。数据。UDP是一个不可靠的协议,发送方所发送的数据报并是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。而不一定以相同的次序到达接收方。而
13、TCP是一个可靠的协议,是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。它确保接收方完全正确地获取发送方所发送的全部数据。下一页返回11.3 项目支撑知识项目支撑知识总之,总之,TCP在网络通信上有极强的生命力,例如远程连接在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输和文件传输(FTP)都需要不定长度的数据被可靠都需要不定长度的数据被可靠地传输。相比之下,地传输。相比之下,UDP操作简单,仅需要较少的监护,因操作简单,仅需要较少的监护,因此通常用于局域网高可靠性的分散系统此通常用于局域网高可靠性的分散系统client/server应用应用程序中。程序中
14、。可靠的传输是要付出代价的,对数据内容正确性的检验必然可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此在多次少量的非占用计算机的处理时间和网络的带宽,因此在多次少量的非紧要数据的传输中紧要数据的传输中TCP传输的效率不如传输的效率不如UDP高。在许多应用高。在许多应用中并不需要保证严格的传输可靠性,比如视频会议系统,并中并不需要保证严格的传输可靠性,比如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用这种情况下显然使用UDP会更合理。会更合理。上一页 下一页返
15、回11.3 项目支撑知识项目支撑知识2.InetAddress类类Java中与网络通信有关的类都存在于中与网络通信有关的类都存在于J包中。包中。InetAddress类用于获得目标主机的类用于获得目标主机的IP地址。该类提供了地址。该类提供了通过通过IP主机名获得主机名获得IP主机地址的方法,而主机名对于使用者主机地址的方法,而主机名对于使用者远比远比IP地址来得方便。该类中常用的方法如下。地址来得方便。该类中常用的方法如下。(1)GetHostName():返回该地址的主机名。如果主机名返回该地址的主机名。如果主机名为为null,那么,当前地址指向当地机器的任一可得网络地址,那么,当前地址指
16、向当地机器的任一可得网络地址,返回值类型为返回值类型为string。(2)GetHostAddress():以以“%d%d%d%d”的形式返回的形式返回IP地址串。返回值类型为地址串。返回值类型为string。上一页 下一页返回11.3 项目支撑知识项目支撑知识(3)GelByName (stringhost):返回指定主机的返回指定主机的IP地址。地址。如果主机名为如果主机名为null,则返回当地机器的默认地址。参数则返回当地机器的默认地址。参数host表示指定的主机,返回值类型为表示指定的主机,返回值类型为InetAddress。(4)GetAllByName (string host):
17、返回指定主机名的返回指定主机名的所有所有InetAddrcss对象。参数对象。参数host表示指定的主机。返回表示指定的主机。返回值存放于值存放于InetAddrcss数组中。数组中。(5)GetLocalHost():返回本地主机的返回本地主机的InetAddrcss对象。对象。由于由于InetAddrcss类没有构造方法,它的实例对象需要过类没有构造方法,它的实例对象需要过方法方法getByName()、getLocalHost()以及以及getAllByName()来建立。来建立。上一页 下一页返回11.3 项目支撑知识项目支撑知识【例例11-1】源程序名源程序名GetLocalHost
18、IP.Java,获取本机,获取本机的的IP地址。地址。上一页 下一页返回11.3 项目支撑知识项目支撑知识【运行结果运行结果】如如图图11-1所示。所示。【程序分析程序分析】第第6行通过创建行通过创建InetAddrcss类的类的GetLocalHost()方法方法来达到获取主机来达到获取主机IP的目的。的目的。项目开发背景知识项目开发背景知识2:Java与与Socket编编程程Socket编程是网络编程的核心内容。网络上的两个程序通编程是网络编程的核心内容。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个套接
19、字端称为一个套接字(Socket)。套接字通常用来实现客户方。套接字通常用来实现客户方和服务方的连接。和服务方的连接。上一页 下一页返回11.3 项目支撑知识项目支撑知识Socket可理解是一种用于表达两台机器之间连接可理解是一种用于表达两台机器之间连接“终端终端”的软件抽象。对于一个给定的连接,在每台机器上都有一个的软件抽象。对于一个给定的连接,在每台机器上都有一个socket,可以想象一个虚拟的,可以想象一个虚拟的“电缆电缆”工作在两台机器之间,工作在两台机器之间,“电缆电缆”插在两台机器的插在两台机器的socket上。当然,物理硬件和两台上。当然,物理硬件和两台机器之间的机器之间的“电缆
20、电缆”这些连接装置都是未知的,抽象的所有这些连接装置都是未知的,抽象的所有目的就是为了让我们不必了解更多的细节。目的就是为了让我们不必了解更多的细节。简单地说,一台计算机上的简单地说,一台计算机上的socket同另一台计算机通话创建同另一台计算机通话创建一个通信信道,程序员可以用这个信道在两台机器之间发送一个通信信道,程序员可以用这个信道在两台机器之间发送数据。在数据。在Java环境下,套接字编程主要是指基于环境下,套接字编程主要是指基于TCP/IP协协议的网络编程。一个套接字由一个议的网络编程。一个套接字由一个IP地址和一个端口号唯一地址和一个端口号唯一确定。确定。上一页 下一页返回11.3
21、 项目支撑知识项目支撑知识1.Java中面向连接的流式中面向连接的流式Socket的通信机制的通信机制无论一个无论一个Socket的通信功能多么齐全,程序多么复杂,其的通信功能多么齐全,程序多么复杂,其基本结构都是一样的,具体过程如基本结构都是一样的,具体过程如图图11-2所示。所示。server端端首先在某个端口创建一个监听首先在某个端口创建一个监听Client请求的监听服务并处于请求的监听服务并处于监听状态,当监听状态,当Client向向server端的这个端口提出连接请求端的这个端口提出连接请求时,时,server端和端和Client端就建立了一个连接和一条传输数端就建立了一个连接和一条
22、传输数据的通道,通信结束时,这个连接通道将被拆除。据的通道,通信结束时,这个连接通道将被拆除。具体来说,所有的客户端程序都必须遵守下面的基本的步骤。具体来说,所有的客户端程序都必须遵守下面的基本的步骤。(1)建立客户端建立客户端socket连接。连接。(2)得到得到socket的读和写的流。的读和写的流。上一页 下一页返回11.3 项目支撑知识项目支撑知识(3)利用流。利用流。(4)关闭流。关闭流。(5)关闭关闭socket。所有的服务器都要有以下的基本的步骤。所有的服务器都要有以下的基本的步骤。(1)建立一个服务器建立一个服务器socket并开始监听。并开始监听。(2)使用使用accept(
23、)方法取得新的连接。方法取得新的连接。(3)建立输入和输出流。建立输入和输出流。(4)在已有的协议上产生会话。在已有的协议上产生会话。(5)关闭客户端流和关闭客户端流和socket。上一页 下一页返回11.3 项目支撑知识项目支撑知识(6)回到第回到第2步或者到第步或者到第7步。步。(7)关闭服务器关闭服务器socket。2.Socket类和类和ServerSocket类类在在表表11-1中有两个不同的对象中有两个不同的对象:Socket对象和对象和ServerSocket对象。这两个对象就是从对象。这两个对象就是从J中提供中提供的两个类的两个类Socket和和ServerSocket派生出来
24、的。类派生出来的。类Socket和类和类ServerSocket是两个封装得非常好的类,它是两个封装得非常好的类,它们是用们是用Java实现流式实现流式Socket通信的主要工具。创建一个通信的主要工具。创建一个Socket对象就建立了一个对象就建立了一个Client和和Server之间的连接,创之间的连接,创建一个建一个ServerSocket对象就创建了一个监听服务。下面具对象就创建了一个监听服务。下面具体介绍这两个类。体介绍这两个类。上一页 下一页返回11.3 项目支撑知识项目支撑知识构造函数中的构造函数中的port是用来连接的端口号。是用来连接的端口号。maxqueue是队是队列长度,
25、该参数告诉系统多少与之连接的客户在系统拒绝连列长度,该参数告诉系统多少与之连接的客户在系统拒绝连接之前可以挂起,默认值是接之前可以挂起,默认值是50。在一个多地址主机上,。在一个多地址主机上,localAddr用来指定该套接字约束的用来指定该套接字约束的IP地址。地址。(1)Socket类。类。在在Java中,一个中,一个Socket就代表了一个就代表了一个TCP连接,当客户端连接,当客户端要与服务器端连接时,首先要创建一个要与服务器端连接时,首先要创建一个Socket对象,服务对象,服务器端按照上文所述过程产生另一个器端按照上文所述过程产生另一个Socket对象与其建立一对象与其建立一个基于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 语言 项目 11 网络 编程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内