【教学课件】第12章Java网络编程.ppt

上传人:小飞机 文档编号:5657791 上传时间:2023-08-06 格式:PPT 页数:82 大小:422.97KB
返回 下载 相关 举报
【教学课件】第12章Java网络编程.ppt_第1页
第1页 / 共82页
【教学课件】第12章Java网络编程.ppt_第2页
第2页 / 共82页
【教学课件】第12章Java网络编程.ppt_第3页
第3页 / 共82页
【教学课件】第12章Java网络编程.ppt_第4页
第4页 / 共82页
【教学课件】第12章Java网络编程.ppt_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《【教学课件】第12章Java网络编程.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第12章Java网络编程.ppt(82页珍藏版)》请在三一办公上搜索。

1、第12章 Java网络编程,学习目标 本章要点上机练习 习 题,学习目标,Java语言的一个重要特色就是与网络紧密结合,它是一种优秀的网络编程语言。它能够方便的将Applet嵌入网络的主页中,也可以实现客户端和服务器端的通信。,学习目标,网络编程的主要目的是直接或者间接地通过网络协议与其他计算机进行通信。网络编程中有两个主要的问题,一是如何准确的定位网络上的一台或者多台主机,另一个是找到主机后如何可靠高效的传输数据。,学习目标,本章首先介绍网络通信协议TCP/UDP,讲解Socket套接字的概念,然后介绍统一资源定位符URL对象的创建和使用,最后详细介绍Socket编程工作原理和应用。,本章要

2、点,网络通信协议统一资源定位符URL对象的创建和使用Socket编程的工作原理TCP/IP和UDP下Socket连接,网络编程基础知识,Internet国际互联网上的计算机之间采用的是TCP/IP协议进行通信,这种协议组由4层组成:应用层、传输层、互联网层和网络接口层。使用Java语言编写网络通信程序一般在应用层,对某些特殊的情况可能需要基于传输编程,但是无须关心网络通信的具体的细节,特别是网际层和网络接口层。,网络编程基础知识,网络编程基本理论 网络编程基本概念和方法,网络编程基本理论,1977年,国际标准化组织(ISO)成立了一个专门机构,提出了各种计算机能够在世界范围内互连成网络的标准框

3、架,即著名的开放系统互联基本参考模型,简称OSI模型,这种模型是一种理论模型。,OSI模型示意图图,网络编程基本理论,而在Internet国际互联网上,实际采用的TCP/IP模型,这种模型。在TCP/IP协议层次结构中,由以下4层组成:应用层、传输层、互联网层和网络接口层,每层又包括若干协议,其中,主要介绍TCP和UDP协议。,TCP/IP模型示意图,网络编程基本理论,TCP(传输控制协议,Transmission Control Protocol)和UDP属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、

4、端到端和可靠的数据包发送。,网络编程基本理论,通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。,网络编程基本理论,一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)和TFTP(通用文件传输协议)等。,网络编程基本理论,TCP和UDP服务通常有一个客户/服务器的关系。用户使用Telnet客户程序与服务进程建立一个连接。

5、客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。,网络编程基本概念和方法,下面讲解网络编程中基本术语的概念及其方法。Socket IP地址 端口 基本方法,Socket,Socket套接字是网络驱动层提供给应用程序编程的接口和管理办法,处理数据接收和输出。Socket套接字作为网络上运行的两个程序间双向通信的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。,Socket,在Java中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的

6、通信。,IP地址,用于标识网络上计算机或者其他网络设备,由4个字节组成,字节之间用“.”分隔,每个字节用十进制表示,取值范围在0-255。网络任意一台计算机都有一个IP地址来惟一标识。,端口,端口表明将数据包发送给目的计算机上的某一个应用程序。应用层协议通常采用客户机/服务器模式,应用服务器启动后监听特定的端口,客户端根据服务时请求与服务端口建立连接。端口号用16位表示,编号是0-65535,其中0-1023分配给常用的网络服务,用户的网络程序应使用1024以上的端口号。,基本方法,Java语言专门为网络通信提供了系统软件包,利用它提供的有关类和方法可以快速开发基于网络的应用程序。,基本方法,

7、系统软件包对HTTP协议提供了特别的支持,只要通过URL类对象指明图像、声音资源的位置,就可以从Web 服务器上下载图像和声音资源,或者通过数据流操作获得HTML文档和文本资源,并对这些资源进行处理。,基本方法,包还提供对TCP、UDP协议套接字Socket 编程的支持,可以建立自己的服务器,实现特定的应用。,统一资源定位符,统一资源定位符(Uniform Resource Locator,URL)是用来获取网络资源的基本途径。本节将对URL作一个详细地介绍。,统一资源定位符,创建URL对象 使用URL获取网络资源 URLConnection网络通信 应用举例获取网站信息,创建URL对象,下面

8、介绍URL的构成及其URL类的使用。URL的构成 URL类的使用,URL的构成,URL用来标识Internet的资源,包括取得获得资源采用的地址,通过URL可以访问Internet的文件和其他资源。URL的一般格式为:protocol:/hostname:port/resourcePath 即:协议名:/主机名:端口号/资源路径,URL的构成,协议名指明了获取资源所用的传输协议,如HTTP、FTP,主机名指明了资源所在的计算机,端口号是指服务器相应的端口,如果采用默认端口,则端口可以省略,资源路径指示该资源在服务器上的虚拟路径。,URL的构成,说明:以上的URL中没有指定端口号,表示采用默认的

9、端口号,即80,而路径/07/0723/11/3K37N19P0001124J.html是文件N19P0001124J.html在服务器上的虚拟路径。资源路径还可以包含HTML文件中的参考位置,一般用#号表示。,URL类的使用,Java语言访问网络资源是通过URL类来实现的,URL是统一的,因为它们采用相同的基本语法,无论寻址哪种特定类型的资源或描述通过哪种机制来获取该资源。,URL类的使用,URL的构造方法很多,主要包括如下几种。public URL(String url):例如:URL url1=new URL(“http:/”)。public URL(URL baseURL,String

10、 relativeURL):其中,baseURL是绝对地址,relativeURL是相对位置。,URL类的使用,URL(String protocol,String host,String filName)和URL(String protocol,String host,int port,String filName):其中protocol表示协议名,host表示主机名,port表示端口号,filName表示文件名,文件名前面可以带路径。,URL类的使用,URL的构造方法会抛出MalformedURLException异常,因此生成URL对象时,必须要对这一例外进行处理,通常是用try-cat

11、ch语句进行捕获。,URL类的使用,格式如下:tryURL myURL=new URL()catch(MalformedURLException e)/exception handler code here,使用URL获取网络资源,利用URL,Java Applet可以从网络上获取图像或者声音。获取图像 获取声音,获取图像,可以使用getImage方法直接从Web服务器上获取图像资源,包括GIF文件和JPEG/JPG文件。【例12-1】使用URL绝对地址从Web 服务器上读取图像并显示(光盘:源文件第12章例12-1.txt)。,获取声音,利用Applet类的play方法可以直接播放网络上的声

12、音文件,也可以使用方法getAudioClip从网络上获取声音资源,生成AudioClip类型的对象,并进行处理。,获取声音,play方法有两种主要形式。play(URL url):使用绝对URL表示声音文件的访问路径。play(URL url,String fileName):使用相对URL表示声音文件的访问路径。,获取声音,getAudioClip方法有两种主要形式。getAudioClip(URL url):使用绝对URL。getAudioClip(URL url,String fileName):使用相对URL。,获取声音,【例12-2】网络声音的播放。通过getAudioClip从网

13、络上获取声音资源,并通过为可视化界面上的按钮添加响应事件来实现操作声音播放的功能(光盘:源文件第12章例12-2.txt)。,类“NetSoundCall”运行结果,URLConnection网络通信,通过URL的方法openStream(),只能从网络上读取数据,如果同时还想输出数据,例如向服务器端的CGI程序发送一些数据,必须先与URL建立连接,然后才能对其进行读写,这时就要用到类URLConnection。,URLConnection网络通信,URL连接的创建 读写操作 使用URLConnection类进行网络通信的基本步骤,URL连接的创建,URLConnection的构造方法只有一个

14、,即:URLConnection(URL url)/创建一个与URL的连接URLConnection类的方法很多,可以返回或者设置资源长度、最新更新时间和编码等全方位信息。,URL连接的创建,用户创建了URL类对象后,通过其openConnection方法获得URLConnection类的对象。其过程如下:tryURL netchinaren=new URL(http:/);URLConnectonn tc=netchinaren.openConnection();,URL连接的创建,catch(MalformedURLException e)/创建URL()对象失败catch(IOExcep

15、tion e)/openConnection()失败,读写操作,建立好了URL连接,就可以针对这个连接的输入流(InputStream)进行读操作,也可以针对这个连接的输出流(OutputStream)进行写操作,这时需要先调用方法setDoInput将输入(Input)属性设置为真(true),指定该连接后写入内容。,应用举例获取网站信息,本节将以获取网站信息为例进行讲解(光盘:源文件第12章应用举例GoHome.txt)。,类“GoHome”运行结果,Socket编程,Socket套接字是TCP/IP网络的API,定义了许多函数或例程,开发人员可以用它们来开发TCP/IP网络上的应用程序。

16、学习Internet上的TCP/IP网络编程,必须理解Socket。,Socket编程,Socket基础知识 Socket编程的工作原理 TCP/IP socket连接 UDP socket连接,Socket基础知识,Socket套接字是网络通信的一个重要机制,是指两台计算机上运行的两个程序之间的双向通信的连接点,这个双向通信链路上每一端都称为一个Socket。,Socket基础知识,Socket数据传输是一种特殊的I/O,也是一种文件描述符,其具有一个类似于打开文件的方法Socket(),该方法返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。,S

17、ocket基础知识,常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。,Socket基础知识,Java采用的Socket通信是一种流式Socket通信,使用TCP协议,实现客户机与服务器之间的双向且可靠的通信。系统包 提供了ServerSocket类和Socket类,分别用于客户端和服务器端。,Socket编程的工作原理,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,

18、它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。,TCP/IP协议示意图,Socket编程的工作原理,利用Socket通信有建立Socket连接、数据通信和关闭连接3个基本步骤。建立Socket连接 数据通信 关闭连接,建立Socket连接,服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。这时,如果有客户端初始化一个Socket,然后连接服务器(connect),如果

19、连接成功,这时客户端与服务器端的连接就建立了。,数据通信,客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据。,关闭连接,通信结束后,关闭连接,一次交互结束。,TCP/IP socket连接,在Java中TCP/IP socket连接是由系统包提供的ServerSocket类和Socket类完成的,这两种类分别用于客户端和服务器端的通信,网络通信的方法都封装在这两个类中。,TCP/IP socket连接,TCP/IP服务器应用程序依靠Java技术语言提供的网络类,ServerSocket类完成了建立一个服务器所需的大部分工作。一个TCP/IP应用程序的客

20、户端依靠Socket类,Socket类完成了建立一个连接所需的大部分工作。构造方法如下所示。,TCP/IP socket连接,SeverSocket(int port):在指定的端口上创建服务器Socket对象。SeverSocket(int port,int count):在指定的端口上创建服务器Socket对象,并指定服务器能够支持的最大连接数。,TCP/IP socket连接,Socket(InetAddress IP,int port):使用指定的IP地址和端口创建Socket对象。Socket(String host,int port):使用指定的主机和端口创建Socket对象。,T

21、CP/IP socket连接,Socket(InetAddress IP,int port,boolean stream):使用指定的IP地址和端口创建Socket对象,stream表示是否采用流式通信。Socket(String host,int port,boolean stream):使用指定的主机和端口创建Socket对象,stream表示是否采用流式通信。,TCP/IP socket连接,建立Socket时要进行异常处理,以便出现异常能作出响应。建立Socket连接后,可以利用Socket类的getInputStream和getOutStream方法获得向Socket读写数据的输入输

22、出流,获得Socket的输入输出流后,需要在这两个流的基础上建立容易操作的数据流,通信结束后使用方法断开连接。,TCP/IP socket连接,Socket通信时,服务器程序可以建立多个线程同时与多个客户端程序通信,还可以通过服务器让各个客户端之间互相通信。,TCP/IP socket连接,【例12-3】通过Socket进行服务器与客户端的通信(光盘:源文件第12章例12-3.txt)。将客户端连接到服务器上,并将服务器发送的所有数据显示出来。在NetBeans窗口的设计区域中输入以下内容。,UDP socket连接,传输控制协议(TCP)是面向连接的协议,而用户数据报协议(UDP)是一种无连

23、接的协议。这两种协议的区别就类似电话和邮递信件的区别。,UDP socket连接,TCP/IP类似电话呼叫,要保证始终有一个同步通信,消息按给定次序发送和接收。而UDP类似邮递信件,对于邮递信件,即使能收到所有的消息,它们的顺序也可能不同。,UDP socket连接,UDP由Java的DatagramSocket和DatagramPacket类支持。UDP包是自包含的消息,包括有关发送方、消息长度和消息自身。DatagramPacket DatagramSocket,DatagramPacket,DatagramPacket有两个构造方法:一个用来接收数据,另一个用来发送数据。Datagram

24、Packet(byte recvBuf,int readLength):建立一个字节数组以接收UDP包。byte数组recvBuf在传递给构造方法时是空的,而readLength值用来设定要读取的字节数。,DatagramPacket,DatagramPacket(byte sendBuf,int sendLength,InetAddress iaddr,int iport):建立将要传输的UDP包。sendLength 不应该比字节数组sendBuf的值要大。,DatagramSocket,DatagramSocket用来读写UDP包。这个类有3个构造方法,指定要绑定的端口号和网络地址。Da

25、tagramSocket():绑定本地主机的所有可用端口。DatagramSocket(int port):绑定本地主机的指定端口。,DatagramSocket,DatagramSocket(int port,InetAddress iaddr):绑定指定地址的指定端口。【例12-4】通过Socket建立UDP服务器和客户端的通信(光盘:源文件第12章例12-4.txt)。,DatagramSocket,服务器在8000端口监听客户的请求。当它从客户接收到一个DatagramPacket时,它发送服务器上的当前时间。客户端向前面创建的客户发送一个空包并接收一个包含服务器实际时间的包。,上 机

26、 练 习,本次练习将创建socket,完成以下要求(光盘:源文件第12章上机练习.txt)。在服务器端编写一个方法,使服务器接收来自客户的文件名字符串,试图打开这个文件并通过socket将它传回到客户。,上 机 练 习,客户端程序将文件名字符串作为一个参数并将它发给服务器,然后等待服务器发送错误响应或文件。,类“showfile”所示结果,习 题,(1)用Socket类实现一个多线程软件,用来下载HTTP服务器上的某个文件。实际就是实现类似网络蚂蚁的功能。,习 题,(2)创建一个多线程的服务器(MultiServer.java),实现以下要求:客户能请求多个文件;客户在没有错误返回时,将文件存放到磁盘;使用线程扩展服务器,多个客户可以同时连接到服务器。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号