第10章 网络编程_第1页
第10章 网络编程_第2页
第10章 网络编程_第3页
第10章 网络编程_第4页
第10章 网络编程_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、JavaJava进阶教程进阶教程( ( 十 一 五 规 划十 一 五 规 划 ) )第10章网络编程主编:刘志成JavaJava进阶教程进阶教程( (十一五规划十一五规划) )本章学习导航本章学习导航JavaJava进阶教程进阶教程( (十一五规划十一五规划) )本章学习要点本章学习要点lC/S网络编程模型网络编程模型l网络编程相关概念网络编程相关概念l使用使用UDP进行网络编程进行网络编程l使用使用Socket进行网络编程进行网络编程教学课时:教学课时:8课时课时JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.1网络编程基础 l目前较为流行的网络编程模型是客户机目前较为

2、流行的网络编程模型是客户机/服务器服务器(Client/Server)结构,简称结构,简称C/S结构。这里的结构。这里的C/S结构是指前端的客户机部分结构是指前端的客户机部分(通通常是指终端用户常是指终端用户)以及后端的服务器部分以及后端的服务器部分 l在在C/S系统中,其中提出服务请求的一方,称为系统中,其中提出服务请求的一方,称为“客户机客户机”,而提供服务的一方称为而提供服务的一方称为“服务器服务器”。典型的客户机。典型的客户机/服务器服务器(Client/Server)结构如图所示结构如图所示 C/SC/S模式和模式和B/SB/S模式模式Server Client HTTP(80) C

3、lient Client Client SMTP(25) FTP(21) TELNET(23) JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.1网络编程基础 lB/S结构即浏览器结构即浏览器/服务器服务器(Browser/Server)结构采用了人们普结构采用了人们普遍使用的浏览器作为客户机。遍使用的浏览器作为客户机。B/S结构是随着结构是随着Internet技术的兴技术的兴起,对起,对C/S体系结构的一种变化或者改进的结构体系结构的一种变化或者改进的结构 lB/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软

4、件才能实现的强大功能,并节约了开发成本,是一种全专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术新的软件系统构造技术 l基于基于B/S模式的信息系统,通常采用三层或更多层结构,即模式的信息系统,通常采用三层或更多层结构,即“客户机浏览器客户机浏览器Web服务器服务器数据库服务器数据库服务器” C/SC/S模式和模式和B/SB/S模式模式JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.1网络编程基础 l所谓通信协议,就是客户端计算机与服务器端计算机在通过网所谓通信协议,就是客户端计算机与服务器端计算机在通过网络进行通信时应该遵循的规则和约定络进行通

5、信时应该遵循的规则和约定 l目前使用最广泛的网络协议是目前使用最广泛的网络协议是Internet上所使用的上所使用的TCP/IP协议协议 lTCP是是Transmission Control Protocol的简称,即传输控制的简称,即传输控制协议,是一种面向连接的保证可靠传输的协议协议,是一种面向连接的保证可靠传输的协议 lIP协议是协议是Internet Protocol的简称,即网际协议,是一种面向的简称,即网际协议,是一种面向无连接的协议无连接的协议 lUDP是是User Datagram Protocol的简称,即用户数据报协议,的简称,即用户数据报协议,是一种面向无连接的协议是一种

6、面向无连接的协议 TCP/IPTCP/IP协议协议JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.1网络编程基础 l在在TCP/IP协议中协议中IP层主要负责网络主机的定位和数据传输的路层主要负责网络主机的定位和数据传输的路由,由由,由IP地址可以唯一地确定地址可以唯一地确定Internet上的一台主机上的一台主机 lInternet上的计算机都有一个地址,这个地址是一个点分十进上的计算机都有一个地址,这个地址是一个点分十进制数字,称为制数字,称为IP地址,它唯一地标识了网络上的一台计算机地址,它唯一地标识了网络上的一台计算机 l在在Internet上都是通过上都是通过I

7、P地址来访问主机,但数字格式的地址来访问主机,但数字格式的IP地地址不容易记忆,我们通常利用域名来访问址不容易记忆,我们通常利用域名来访问Internet上的主机上的主机 lDNS即域名服务,提供将即域名服务,提供将IP地址解释为相应域名的服务。地址解释为相应域名的服务。DNS担负着将形象的域名翻译成数字型担负着将形象的域名翻译成数字型IP地址的工作地址的工作l网络通信时同一机器上的不同进程的标识。如:网络通信时同一机器上的不同进程的标识。如:80、21、23和和25等,其中等,其中11024为系统保留的端口号为系统保留的端口号 IPIP地址和地址和InetAddressInetAddress

8、类类JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.1网络编程基础 包中的包中的InetAddress类创建的对象包含一个类创建的对象包含一个Internet主主机地址的域名和机地址的域名和IP地址地址 lInetAddress类没有提供构造方法,所以不能用类没有提供构造方法,所以不能用new()方法来方法来创建它的对象,而只可以调用静态方法创建它的对象,而只可以调用静态方法getLocalHost()、getByName()、getByAddress()等来获得等来获得InetAddress类的属类的属性性 IPIP地址和地址和InetAddressInetAddres

9、s类类JavaJava进阶教程进阶教程( (十一五规划十一五规划) )课堂模仿课堂模仿1 1操作要求操作要求 (1)根据输入的)根据输入的IP地址,输出主机名。地址,输出主机名。(2)根据输入的主机名,输出)根据输入的主机名,输出IP地址。地址。(3)若输入的主机名或)若输入的主机名或IP地址不能被解析则显示此主机名或地址不能被解析则显示此主机名或IP不能被解析。不能被解析。操作提示操作提示(1)利用第)利用第7章学习的标准输入方法从命令行读入主机名或章学习的标准输入方法从命令行读入主机名或IP地址。地址。(2)利用)利用InetAddress.getAllByName()方法返回一个方法返回

10、一个InetAddress对象数组,得到指定计算机的所有对象数组,得到指定计算机的所有IP地址,调地址,调用此方法将抛出用此方法将抛出UnknownHostExceptio异常,若抛出此异异常,若抛出此异常则表示指定的主机名或常则表示指定的主机名或IP地址不能被解析。地址不能被解析。JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.2URL编程 l统一资源标识符统一资源标识符URI(Uniform Resource Identifier),它用),它用来标志来标志Internet上各种资源。上各种资源。URI又分为两种类型:统一资源定又分为两种类型:统一资源定位符位符URL

11、(Uniform Resource Locator)和统一资源名)和统一资源名URN(Uniform Resource Name) lURL即统一资源定位器,是即统一资源定位器,是Internet的关键部分,它表示的关键部分,它表示Internet上某一资源的地址。它提供了人和机器的导航,其功能上某一资源的地址。它提供了人和机器的导航,其功能是指向计算机里的资源(即定位)是指向计算机里的资源(即定位) lURL类封装了使用统一资源定位器访问类封装了使用统一资源定位器访问WWW上的资源的方法。上的资源的方法。这个类可以生成一个寻址或指向某个资源的对象这个类可以生成一个寻址或指向某个资源的对象 U

12、RLURL的概念的概念JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.2URL编程 lURL的一般格式如下:的一般格式如下:protocol:/hostname:port/resourcename#anchorlURL中各组成项的主要含义如表所示中各组成项的主要含义如表所示 URLURL的组成的组成JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.2URL编程 l一个一个URL对象对应一个网址,生成对象对应一个网址,生成URL对象后,就可以调用对象后,就可以调用URL对象的对象的openStream()方法读取网址中的信息方法读取网址中的信息 l调用调

13、用openStream()方法获取的是一个方法获取的是一个InputStream输入流对输入流对象象 ,通过,通过read()方法只能从这个输入流中逐字节读取数据,也方法只能从这个输入流中逐字节读取数据,也就是从就是从URL网址中逐字节读取信息网址中逐字节读取信息 l为了能更方便地从为了能更方便地从URL中读取信息,通过将原始的中读取信息,通过将原始的InputStream输入流转变成其他类型的输入流(如输入流转变成其他类型的输入流(如BufferedReader等)等) 从从URLURL读取读取WWWWWW网络资源网络资源JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.

14、2URL编程 l利用利用URL类只能简单地读取网址中的信息,如果还要向服务器类只能简单地读取网址中的信息,如果还要向服务器发送信息,就要使用发送信息,就要使用包的包的URLConnection类类 l通过建立通过建立URLConnection对象可以自动完成通信的连接过程,对象可以自动完成通信的连接过程,通信需要的一些附加信息也由系统提供,大大简化了编程工作通信需要的一些附加信息也由系统提供,大大简化了编程工作 l对一个已建立的对一个已建立的URL对象调用对象调用openConnection()方法,就可方法,就可以返回一个以返回一个URLConnection对象,一般格式如下:对象,一般格式

15、如下: URL url=new URL(http:/);URLConnection myurl=url.openConnection();通过通过URLConnectionURLConnection连接连接WWWWWWJavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.2URL编程 lURLConnection类的常用方法如表所示类的常用方法如表所示 通过通过URLConnectionURLConnection连接连接WWWWWWJavaJava进阶教程进阶教程( (十一五规划十一五规划) )课堂模仿课堂模仿2 2操作要求操作要求 (1)设计一个)设计一个GUI程序,用户可以

16、输入网址并查看该网址的相程序,用户可以输入网址并查看该网址的相关信息。参考界面如图关信息。参考界面如图10-7所示。所示。(2)利用)利用URLConnection获得网页获得网页“http:/”的的报头名称和内容。报头名称和内容。操作提示操作提示(1)可以对用户输入的网址进行有效性检查。)可以对用户输入的网址进行有效性检查。(2)通过文本框输入网址,通过文本域显示信息。)通过文本框输入网址,通过文本域显示信息。(3)理解)理解URL和和URLConnection访问网络资源的区别。访问网络资源的区别。JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 l

17、网络上两个以双工方式通信的进程之间的连接端点称为套接字,网络上两个以双工方式通信的进程之间的连接端点称为套接字,套接字用于实现网络上客户端程序和服务端程序之间的连接。套接字用于实现网络上客户端程序和服务端程序之间的连接。套接字相对套接字相对URL而言是在较低层次上进行通信而言是在较低层次上进行通信 l使用使用Socket可以用来连接可以用来连接Java的的I/O系统到其他程序,这些程系统到其他程序,这些程序可以在本地计算机上,也可以是在序可以在本地计算机上,也可以是在Internet的远程计算机上的远程计算机上 l应用程序一般仅在同一类的套接字之间通讯应用程序一般仅在同一类的套接字之间通讯 l

18、流套接字提供双向的、有序的、无重复并且无记录边界的数据流套接字提供双向的、有序的、无重复并且无记录边界的数据流服务,流服务,TCP是一种流套接字协议。而数据报套接字也支持双是一种流套接字协议。而数据报套接字也支持双向的数据流,但并不保证是可靠、有序、无重复的。向的数据流,但并不保证是可靠、有序、无重复的。UDP即是即是一种数据报套接字协议一种数据报套接字协议 SocketSocket概述概述JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 在套接字通信中客户端的程序使用在套接字通信中客户端的程序使用Socket类建立与服务器套接类建立与服务器套接字连接,

19、字连接,Socket类的构造方法如表所示类的构造方法如表所示 SocketSocket类和类和ServerSocketServerSocket类类JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 服务器端程序使用服务器端程序使用ServerSocket类建立接收客户套接字的服务类建立接收客户套接字的服务器套接字。器套接字。ServerSocket类的构造方法和常用方法如表所示类的构造方法和常用方法如表所示 SocketSocket类和类和ServerSocketServerSocket类类JavaJava进阶教程进阶教程( (十一五规划十一五规划) )1

20、0.3Scoket编程 客户端和服务器端通过套接字进行通信时,要进行读写端口和客户端和服务器端通过套接字进行通信时,要进行读写端口和取地址操作。读写端口和取地址的方法表所示取地址操作。读写端口和取地址的方法表所示 SocketSocket类和类和ServerSocketServerSocket类类JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 客户端客户端Socket的工作过程通常包含以下四个基本的步骤:的工作过程通常包含以下四个基本的步骤:(1)创建创建Socket。根据指定的。根据指定的IP地址或端口号构造地址或端口号构造Socket类对象。类对象

21、。如服务器端响应,则建立客户端到服务器的通信线路。如服务器端响应,则建立客户端到服务器的通信线路。(2)打开连接到打开连接到Socket的输入的输入/出流。使用出流。使用getInputStream()方法方法获得输入流,使用获得输入流,使用getOutputStream()方法获得输出流。方法获得输出流。(3)按照一定的协议对按照一定的协议对Socket进行读进行读/写操作。通过输入流读取服写操作。通过输入流读取服务器放入线路的信息务器放入线路的信息(但不能读取自己放入通信线路的信息但不能读取自己放入通信线路的信息),通,通过输出流将信息写入线路。过输出流将信息写入线路。(4)关闭关闭Soc

22、ket。断开客户端到服务器的连接,释放线路。断开客户端到服务器的连接,释放线路。基于基于SocketSocket的的C/SC/S程序程序JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 基于基于Socket的的C/S通信如图所示通信如图所示 基于基于SocketSocket的的C/SC/S程序程序JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 Server和一个客户的通信和一个客户的通信 ,基于,基于Socket的客户端程序的客户端程序 ServerServer和一个客户的通信和一个客户的通信JavaJava进阶

23、教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 Server和一个客户的通信和一个客户的通信 ,基于,基于Socket的客户端程序的客户端程序 Server和一个客户的通信和一个客户的通信JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 Server和一个客户的通信和一个客户的通信 ,基于,基于Socket的服务器端程序的服务器端程序 Server和一个客户的通信和一个客户的通信JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 Server和一个客户的通信和一个客户的通信 ,基于,基于Sock

24、et的服务器端程序的服务器端程序 Server和一个客户的通信和一个客户的通信JavaJava进阶教程进阶教程( (十一五规划十一五规划) )10.3Scoket编程 ServerServer和多个客户的通信和多个客户的通信l为了实现在服务器方给多个客户提供服务的功能,利用多线程为了实现在服务器方给多个客户提供服务的功能,利用多线程响应多客户请求响应多客户请求 l服务器总是在指定的端口上监听是否有客户请求,一旦监听到服务器总是在指定的端口上监听是否有客户请求,一旦监听到客户请求,服务器就会启动一个专门的服务线程来响应该客户客户请求,服务器就会启动一个专门的服务线程来响应该客户的请求,而服务器本

25、身在启动完线程之后马上又进入监听状态,的请求,而服务器本身在启动完线程之后马上又进入监听状态,等待下一个客户的到来等待下一个客户的到来 JavaJava进阶教程进阶教程( (十一五规划十一五规划) )课堂模仿课堂模仿3 3操作要求操作要求 (1)使用)使用ServerSocket编写一个时间服务器程序,它能够向客编写一个时间服务器程序,它能够向客户程序发送时间信息。户程序发送时间信息。(2)编写相应的客户端程序,能够向服务器发送请求并读取时)编写相应的客户端程序,能够向服务器发送请求并读取时间服务器的应答。间服务器的应答。操作提示操作提示(1)注意服务器端的基本流程)注意服务器端的基本流程 J

26、avaJava进阶教程进阶教程( (十一五规划十一五规划) )10.4数据报编程 数据报通讯概述数据报通讯概述lUDP可以发送数据报,但它的开销比可以发送数据报,但它的开销比TCP少得多少得多lUDP的缺点是它不保证数据发送的可靠性,数据接收到的顺序的缺点是它不保证数据发送的可靠性,数据接收到的顺序可能和发送的顺序不同,甚至还可能完全丢失数据报可能和发送的顺序不同,甚至还可能完全丢失数据报 lUDP特别适合容忍数据报部分丢失,而对实时性要求更高的应特别适合容忍数据报部分丢失,而对实时性要求更高的应用程序,例如语音传输等用程序,例如语音传输等 lUDP并不刻意追求数据包会完全发送出去,也不能担保它们抵并不刻意追

温馨提示

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

评论

0/150

提交评论