11 网络编程基本概念.ppt

上传人:qwe****56 文档编号:70021065 上传时间:2023-01-14 格式:PPT 页数:43 大小:182KB
返回 下载 相关 举报
11 网络编程基本概念.ppt_第1页
第1页 / 共43页
11 网络编程基本概念.ppt_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《11 网络编程基本概念.ppt》由会员分享,可在线阅读,更多相关《11 网络编程基本概念.ppt(43页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 JAVA 高级应用 管理学院电子商务系第一章 网络编程基础n1.1 网络编程基本概念n1.2 Socket编程21.1 网络编程基本概念 n1、网络编程概述n2、URL地址n3、Socket简述n4、异常处理要点n5、InetAddress类31、网络编程概述(1)TCP和UDP简介n计算机在网络上通过TCP(Transmission Control Protocol,传输控制协议)和UDP协议(User Datagram Protocol,用户数据报协议)进行通信。可以将网络协议分为四层,从高到低依次为:应用层、传输层、网络层、链路层。n发送数据的进程将数据从上往下传送,每当数据经过一层,

2、就要加上相应的协议头。接受数据和发送数据的过程相反,数据从下往上传递,每当数据经过一层,就要去掉相应的协议头,最后收到的数据就是没有任何协议头的原始数据。41、网络编程概述nTCP是一个可靠的、面向连接的协议。它可以保证数据从连接的一方传递到另一方,并且发送数据的顺序和所接收数据的顺序一致。当应用程序需要一个可靠的、点对点的连接时,可以使用TCP。51、网络编程概述n用户数据报协议UDP是一种不可靠的通信协议,没有检测错误的机制,也不重发丢失的数据。接收到的数据包的顺序可能与发送的数据包的顺序不一致。n采用UDP进行通信时,事先不需要建立连接。而采用TCP进行通信时,首先要建立一个连接。TCP

3、的通信质量比UDP高,UDP的开销比TCP小。61、网络编程概述nUDP协议不能保证数据包以指定的顺序到达。数据包可能丢失,也可能重复,甚至可能无序到达。因此,如果使用UDP,程序员需要投入大量额外的编程工作,以应对这些问题。UDP适用于不要求错误检查和可靠性的网络应用程序,可靠性差,但速度快。71、网络编程概述(2)Java语言的网络编程功能nJava是适用于网络环境的一种编程语言,具有强大的网络功能。nJava通过面向对象的方法,隐藏了网络通信程序中的一些细节,为用户提供了平台无关的使用接口。n当我们使用java编写网络程序时,不用关心TCP和UDP的细节。使用包中的类就可以编写出平台无关

4、的网络程序。81、网络编程概述(3)IP地址和端口号n在网络上可以用IP地址来唯一的标识一台计算机。IP地址(IPv4)是四个用点隔开的数字,总共32位,每个数字8位(表示范围:0255),例如:192.168.10.22。(IPv6地址有128位,地址范围更大)n端口port与IP地址一起可以为网络应用程序之间提供一种地址标识功能。同一台计算机上可能有多个服务程序,每个服务程序在相应的port提供服务。91、网络编程概述nport并非机器上的实际位置,而是一个逻辑概念(抽象的概念)。客户端程序要和服务程序交互,首先要找到服务程序所在的机器(可以通过IP地址),然后在这台机器上找到服务程序(通

5、过port)。在一台服务器上,可能有很多服务程序,每个服务程序对应与一个不与其他服务冲突的port。101、网络编程概述n客户端程序必须事先知道它所请求的服务程序对应的端口号。nport通常称为握手点,它被客户用来定位服务器计算机上的服务应用程序。n端口号范围:065535。可以是范围中的任何一个数字。通常,OS将1024以下的端口号保留给系统服务用。111、网络编程概述n我们不应当使用为系统服务保留的端口号,也不应当使用任何一个已被使用的端口号。n服务程序在相应的port监听是否有连接Connection。客户端程序尝试与服务程序建立连接。连接建立以后,可以通过连接传输数据,在处理数据时,可

6、以使用与文件处理相同的Java编程模型。121、网络编程概述n同一台计算机既可以作为服务器,又可以作为客户机。这样就可以在同一台计算机上测试网络程序,而无需通过网络。n对应于本地主机localhost的IP地址为:127.0.0.1。该IP地址可以用于测试网络应用程序。132、URL地址(1)URL简介nURL是统一资源定位符Uniform Resource Locator的简称,以一个字符串的形式表示Internet上某一资源的位置。(2)URL地址的组成nURL地址由两部分组成:协议名和资源名,两者用“:”隔开。协议名指出了访问该资源所使用的网络协议,如http、ftp等。资源名是网络资源

7、的完整地址,包括主机名、端口号、文件名和文件的一个引用。对于多数协议,主机名和文件名是必须的,其余可选。142、URL地址n例如:nhttp:/ URL(String s);s是表示URL地址的字符串。例如:new URL(“http:/ URL(URL context,String s);例如:URL u1=new URL(“http:/ u2=new URL(u1,“index.html”);162、URL地址nc、public URL(String protocol,String host,String file);nd、public URL(String protocol,String

8、 host,int port,String file);例如:URL u=new URL(“http”,“”,80,“index.html”);172、URL地址nURL类的构造方法声明抛出(throws)异常MalformedURLException(将异常抛给调用构造方法的代码)。所以我们必须在调用URL构造方法的地方对异常进行处理(写出异常处理代码,如下),具体概念在后面介绍。182、URL地址 try URL u=new URL(“”);catch(MalformedURLException e)/异常处理代码 192、URL地址B、获取URL对象属性的方法:public String

9、 getProtocol();获取URL对象的协议名。public String getHost();获取URL对象的主机名。public int getPort();返回URL对象的端口号;若无,返回1。202、URL地址 public String getFile();返回URL对象的文件名。public String getPath();返回URL对象的路径。212、URL地址C、通过URL对象访问网络资源:nURL提供了openStream()方法,该方法与指定的URL地址建立连接并返回一个InputStream类的对象,因此可以使用InputStream类的方法读取数据,和普通的文件

10、处理一样方便,只是读取的文件不是在本地计算机上,而是在网络上。222、URL地址 例 OpenStreamTest.javan注:Applet可以通过执行它的浏览器来显示任意URL所标识的内容。getAppletContext().showDocument(u);U是一个URL对象。233、Socket简述(1)为何有Socket?nJava提供了URL类用来在一个相对较高的层次上进行网络通讯,以实现对Internet上资源的访问。但有时程序需要较低层次的网络通信,这时就需要使用Socket。n在各种网络的C/S应用中,客户机与服务器之间的通信组件是多种多样的,大部分通信组件内最低层的核心通信

11、机制都是使用socket机制来实现的。243、Socket简述(2)Socket概念nsocket是在两个应用程序之间用来进行双向数据传输的网络通信端点,一般由一个地址加一个端口号来识别。每个服务程序在一个众所周知的端口提供服务。nsocket是进程之间通信的抽象连接点。客户程序和服务程序通过一个双向的通信连接实现数据交换,这个双向通路的每一端就是一个socket。n现实生活中,人们可以通过电话进行交流。我们可以把打电话的双方看作客户程序和服务程序,电话之间的连线是一个双向的通信链路,链路每一端的电话机可以看成是一个socket。253、Socket简述(3)Socket分类n目前有两种soc

12、ket:流式socket、数据报式socket。流式socket提供了双向的、有序的、无重复的数据流服务。数据报式socket支持双向的数据流,但不能保证有序、无重复。TCP是一种流式socket协议;UDP是一种数据报式socket协议。n在网络编程时,大多数的时候,我们采用TCP,偶而才会使用UDP。TCP提供了一个可靠的、面向连接的通信通道。本章主要介绍使用TCP协议的socket编程技术。263、Socket简述(4)Socket编程基础n在网络编程时,需要产生一个socket来建立与另一台机器的连接。然后就可以从socket获得InputStream和OutputStream对象,这

13、样就能够用输入输出流对象来进行数据处理。n一个连线对应于两个socket对象。n有两种socket类:ServerSocket用来让服务器监听连线;Socket用来让客户端建立连线。273、Socket简述n当客户端建立连线后,ServerSocket就会通过accept()方法返回对应的Socket,通过返回的Socket就可以开始通信。这样便有一条socket对socket的连线。可以使用getInputSream()和getOutputStream()方法从两个socket获得相应的InputStream和OutputStream对象,然后可以对其进行处理,就象通常的文件处理一样。283

14、、Socket简述nServerSocket的主要作用是等待客户机连接上来,然后返回一个Socket。n生成ServerSocket对象时只需指定port,因为它已经位于运行服务程序的机器上了。在产生Socket对象时,必须同时指定IP地址和port(服务程序所对应的端口号)。294、异常处理要点(1)为何需要异常处理?n混用程序逻辑与异常处理逻辑(将程序代码与错误处理代码混杂在一起)会降低程序的性能,因为程序必须测试错误处理逻辑才能确定是否执行下一个任务。请看以下伪码:304、异常处理要点n执行一个任务nif 在执行任务的过程中出现错误 进行错误处理 执行下一个任务 if 在执行任务的过程中

15、出现错误 进行错误处理 .314、异常处理要点n异常处理可以使程序更加健壮(提高容错度)。应当从设计一开始就将异常处理融入到系统中。n没有异常发生时,异常处理代码仅会增加极少的开销,所以,实现异常处理的程序在执行效率上要高于错误处理代码与程序逻辑混用的程序。324、异常处理要点(2)try块和catch语句、finally语句ntry用来封装可能产生异常的代码和异常发生时不应执行的代码。try块后紧跟一条或多条catch语句,每条catch语句只能有一个异常参数,用于标识该语句能够处理的异常类型。334、异常处理要点n如果有多条catch语句,则将处理子类异常的catch语句放在前面,处理父类

16、异常的catch语句放在后面。将参数为Exception类型的catch语句放在其他捕获Exception子类异常的catch语句之前,会阻止这些语句的执行,这是一种编译错误。n如果某个try块发生异常,则try块终止执行,程序流程控制转移到其后第一个catch语句。344、异常处理要点n程序将异常与各个catch语句的异常参数进行匹配,如果类型相同或抛出的异常类型是异常参数类型的子类,则匹配结束,执行相应catch语句的错误处理代码。完成处理后,程序忽略其他的catch语句,并从try/catch序列后的第一行代码恢复执行。n如果try块没有发生异常,则程序忽略catch异常处理语句,程序从

17、try/catch序列后的第一行代码恢复执行。354、异常处理要点n如果最后一个catch语句后面有一个finally语句,则无论是否发生异常,都会执行finally语句。finally语句是一个释放资源,防止资源泄漏的地方。(资源泄漏:因未捕获异常而导致夭折的程序可能使某个资源不能被其他程序请求使用。)n如果没有捕获方法中发生的异常,或者产生异常的语句不在try语句中(如在被调用的方法中),则包含异常发生语句的方法将立即中止,并且程序在调用方法中定位一个try块。364、异常处理要点(3)throws语句n在方法声明中,throws语句用于指定该方法所有可能抛出的异常,包含一个由逗号隔开的异

18、常列表,若在方法执行期间产生异常,则该方法将抛出列表中的异常。这些异常可能由方法体中的语句抛出或由方法体中所调用的方法抛出。n方法可以抛出指定类型的异常,也可以抛出其子类的异常。374、异常处理要点(4)throw语句ncatch语句在捕获异常后,如果处理不了异常,则可以通过throw语句重新抛出异常(将异常重新抛给外部调用方法的try块),下一个try块(按照与方法调用顺序相反的顺序)将检测这个重新抛出的异常,该try块后的catch语句将尝试处理该异常。384、异常处理要点n对于不受控异常,程序没有捕获的强制要求。RuntimeException和Error类及其子类都是不受控异常。但也可

19、以在出现不受控异常的地方添加相应的异常处理代码。n例 ExceptionTest.java;ExceptionTest2.java;395、InetAddress类(1)InetAddress作用nJava通过InetAddress对象存储网络中计算机的Internet地址,该对象含有与网络编程有关的许多变量和方法。(2)用于创建InetAddress实例的构造方法:nA、InetAddress iInetAddress.getLocalhost();getLocalhost()返回代表本地主机的 InetAddress对象。405、InetAddress类nB、InetAddress i=I

20、netAddress.getByName(“”);getByName(hostname)返回由hostname所指定机器的InetAddress对象,如果找不到hostname机器,则该方法抛出UnknownHostException。nC、InetAddress i=InetAddress.getAllByName(“”);415、InetAddress类 可以用同样的名字代表一组机器。getAllByName(hostname)返回一组具有相同名字的InetAddress对象,如果一台机器都没找到,则方法抛出UnknownHostException。(3)InetAddress类提供的一些常用方法:nA、public String getHostName();返回表示InetAddress对象主机名的字符串。425、InetAddress类nB、public byte getAddress();返回InetAddress对象的地址。nC、public String getHostAddress();返回InetAddress对象的Internet地址。43

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com