第3讲网络编程知识点课件

上传人:无*** 文档编号:241643802 上传时间:2024-07-12 格式:PPT 页数:43 大小:1.46MB
返回 下载 相关 举报
第3讲网络编程知识点课件_第1页
第1页 / 共43页
第3讲网络编程知识点课件_第2页
第2页 / 共43页
第3讲网络编程知识点课件_第3页
第3页 / 共43页
点击查看更多>>
资源描述
第第3讲讲 java网络编程网络编程网络通信基础网络通信基础1Java中所涉及的网络应用类中所涉及的网络应用类2TCP/IP协议体系结构协议体系结构3socket通信通信4一、一、网络通信基础网络通信基础vJava作为Internet上最流行的网络编程语言,它与生俱来就具有强大的网络功能,其应用程序编程接口(Application Programining Interface,API)包含了很多与网络相关的类和方法,对网络通信提供了全面的支持。v通过它们可以方便快捷地编写与网络相关的程序,与服务器建立各种形式的连接和传输通道,访问Internet和Web上的信息资源,实现计算机之间的通信。目前,基于Java的网络编程主要集中在以下几方面:()Applet程序:又称为Java小程序,它嵌套在超文本标记语言(HyperText Markup Language,HTML)文件(网页)中,通过网络下载其代码到本地浏览器的JVM中执行。()基于应用层HTTP(Hypertext Transfer Protocol,超文本传送协议)协议的URL通信程序:它使用.URL类来获取Web文件,实现Web访问。网络通信基础网络通信基础v()基于传输层TCP协议的Socket通信程序:它使用.Socket类和.ServerSocket类,实现基于TCP套接字(Socket,端口)的可靠的C/S(Client/Server)模式网络通信编程。v()基于传输层UDP协议的Datagram通信程序:它使用.DatagramPacket类和.DatagramSocket类,提供基于UDP的不可靠的通信机制,如多媒体组播服务。v()基于Java RMI(Remote Method Invocation,远程方法调用)的分布式应用程序:它使用java.rmi.*包中的类实现各种分布式计算。v()基于JDBC的网络数据库程序:它使用JDBC(Java Database Connectivity,Java数据库连接)机制,通过网络访问关系型数据库。v()基于Servlet/JSP(Java Server Page,Java服务器网页)Web服务器程序:使用Servlet/JSP技术,实现Web服务器端的动态网页编程。v()基于EJB(Enterprise Java Bean,企业级JavaBean)的应用服务器程序:使用EJB技术规范,实现B/A/S(Browser/Application/Server)模式的EJB应用服务器端的编程。网络通信基础网络通信基础v计算机网络是把地理位置分散、具有独立功能的计算机,用通信线路和通信设备连接起来,以实现资源共享与网络通信的复合系统。计算机网络由硬件系统、软件系统和通信协议组成。网络按覆盖的地理范围分为LAN(局域网:几十米至数公里)、MAN(城域网:几十公里至数百公里)和WAN(广域网:数百公里以上,甚至上万公里)。v网络通信是指物理上位于两台计算机上的两个进程之间通过网络交换信息的过程。网络通信的核心是协议。协议是指通信双方进程在通信过程中,为交换信息,实现通信,必须共同遵守的一系列约定和规则。网络协议由语义、语法和时序三部分组成,语义定义“做什么”(进程之间交换的操作原语),语法定义“如何做”(进程之间所交换的消息的格式),时序定义“何时做”(进程之间交换消息所必须遵循的先后顺序)。通信双方的进程只要遵循同一协议,即可以相互交换信息,而不管这两个进程是用什么样的语言编写的。OSI/RM协议体系结构协议体系结构通信子网边界通信子网边界路由器路由器路由器路由器子网内部协议子网内部协议应用协议应用协议表示协议表示协议会话协议会话协议主机主机B主机主机A应用层应用层表示层表示层会话层会话层传输层传输层网络层网络层数据链路层数据链路层物理层物理层应用层应用层表示层表示层会话层会话层传输层传输层网络层网络层数据链路层数据链路层物理层物理层网络网络数据链路数据链路物理物理网络网络数据链路数据链路物理物理APDUPPDUSPDUTPDU报文分组报文分组帧帧比特比特7654321层次层次协议数据单元协议数据单元网络层:主机网络层:主机-路由器协议路由器协议数据链路层:主机数据链路层:主机-路由器协议路由器协议物理层物理层:主机主机-路由器协议路由器协议OSI/RM模型各层的基本功能模型各层的基本功能vOSI/RM模型共由7层构成,其各层的基本功能是:物理层是ISO OSI/RM的最低层,它提供物理链路,实现比特流的透明传输数据链路层为穿越物理链路的信息提供可靠的传输手段,为数据块(帧)发送提供必要的同步、差错控制和流控制,其数据传输的基本单位是帧。网络层为更高层次提供独立于数据传输和交换技术的系统连接,并负责建立、维持和结束连接,其传输的基本单位是分组,其基本任务包括路由选择、拥塞控制和网络互联等。传输层为不同系统的会话实体建立端端之间透明、可靠的数据传输,并提供端点间的错误校正和流控制,其传输的基本单位是报文。会话层为应用程序间的通信提供控制结构,包括建立,管理,终止连接(任务)OSI/RM模型各层的基本功能模型各层的基本功能表示层提供应用进程在数据表示(语法)差异上的独立性,完成数据格式转换,数据加密/解密、数据压缩/解压。应用层是最靠近用户的一层,提供给用户对OSI环境的访问和分布式信息服务,应用层以下各层均通过应用层向应用进程提供服务。vOSI/RM模型遵循的两个基本原则:由于通信一般是在两个计算机之间发生,因此协议一般是由位于发送方和接收方的两个程序模块实现。采用分层模型,在每一个层次上,定义对等实体之间的通信协议vOSI/RM模型实现通信的基本原理:层间通过“接口”实现下层为上层服务,上层使用下层提供的服务对等层通过“对等层协议”实现虚通信。二、二、Java中所涉及的网络应用类中所涉及的网络应用类vJava网络编程主要处理应用层的任务,但应根据传输层所选协议(TCP或UDP)的不同而选用不同的网络API完成实际的网络通信任务。这些基本网络类主要包含在.*包中,本章所涉及的类如表10-1所示:类名描述.URL.URLC.S.ServerS.DatagramP.DatagramS.MulticastSocket根据URL值访问网络资源。根据URL值实现双向通信。创建客户端Socket类的对象。创建服务器端Serversocket类的对象。创建一个待发送或接收的数据报对象创建一个用来发送或接收数据报的数据报套接字对象。多播数据报套接字类,它用来发送和接收IP多播包。基于基于HTTP的的URL通信通信URL(Uniform Resource Locater,统一资源定位器)的值表示网络上某个资源(如打印机、文件)的地址,实现了对网络资源的定位,其值由五部分组成,格式如下::/:端口号/#引用应用协议:指明获取资源所使用的应用层协议,如HTTP、FTP、FILE等。主机名:指定资源所在的计算机,它既可以是IP地址,如127.0.0.1,也可以是主机名或域名,如localhost和。端口号:用来区分不同的网络服务,指定建立到远程主机 TCP 连接的端口号,若未指定该端口号,则使用协议默认的端口,如http协议的默认端口为 80。文件名:是包括该文件的完整路径。引用:是资源内的某个引用,用来定位显示文件内容的位置,如。注意:实际中并非所有的URL都包含这些元素,对于多数的协议、主机名和文件名是必需的,而端口号和文件内部的引用则是可选的。URL类类v1URL类的构造方法为了表示URL,Java中定义了URL类。URL类有6个构造函数,其中常用的有4个(用“*”号标记),如表10-2所示。构造方法功能*URL(String spec)throws MalformedURLException*URL(String protocol,String host,int port,String file)*URL(String protocol,String host,int port,String file,URLStreamHandler handler)*URL(String protocol,String host,String file)URL(URL context,String spec)URL(URL context,String spec,URLStream Handler handler)根据spec指定的完整URL地址创建URL对象。根据protocol、host、port号和file创建URL对象。根据protocol、host、port号、file和handler创建URL对象。根据指定的protocol、host和file创建URL对象通过指定的上下文,对给定的spec进行解析创建URL。通过指定的上下文,用指定的处理程序对spec进行解析来创建URL对象。URL构造方法构造方法v说明:使用URL构造方法创建对象时,若参数有错误,则会产生一个非运行时异常 MalformedURLException,表10-2中的“”表示“throws MalformedURLException”,所以在构造URL对象时必须捕获异常并进行相应处理。v举例:(),其URL的构造方式如下:(1)new URL();(2)new URL(http,80,/rwweb/index.asp);(3)new URL(http,80,/rwweb/index.asp,null);/使用协议的默认流处理程序(4)new URL(http,/rwweb/index.asp);/HTTP默认端口为80(5)URL url=new URL();new URL(url,index.asp);/多用于访问同一主机上不同路径的文件(6)new URL(url,index.asp,null);/使用协议的默认流处理程序URL类类常用方法常用方法v2URL类的常用方法vURL类的常用方法及功能如表10-3所示:v说明:一旦拥有了URL对象,就可以使用getAuthority()、getDefaultPort()、getFile()、getHost()、getPath()、getPort()、getProtocol()、getQuery()、getRef()和getUserInfo()v等方法获取URL的各种属性。在这些URL属性获取方法中,若某些属性不存在,这些方法就返回null或-1。URL类的常用方法及功能类的常用方法及功能常用方法功能public String getAuthority()public Object getContent()public int getDefaultPort()public String getFile()public String getHost()public String getPath()public int getPort()public String getProtocol()public tring getQuery()public String getRef()public String getUserInfo()*public URLConnection openConnection()public URLConnection openConnection(Proxy proxy)*public InputStream openStream()public boolean same other)获得URL实例的授权部分获得URL实例的内容获得URL实例所关联协议的默认端口号获得URL实例的文件名获得URL实例的主机名获得URL实例的路径部分获得URL实例的端口号获得URL实例的协议名称获得URL实例的查询部分 获得URL实例的锚点(“引用”)获得URL实例的userInfo部分返回一个URLConnection对象通过指定的代理建立连接,返回URLConnection对象返回一个用于从该连接读入的InputStream比较两个URL实例,但不包括片段部分openConnection()方法方法v使用URL对象的openConnection()方法连接到该URL地。v例:tryURLyahoo=newURL();URLConnectionyahooConnection=yahoo.openConnection();catch(MalformedURLExceptione)/newURL()failed.catch(IOExceptione)/op基于基于TCP的的Socket通信通信(*)v基于TCP的Socket(套接字)通信是通过指定IP地址以及端口号,采用C/S(Client/Server)模式建立TCP协议下的两个通信进程之间的连接,实现可靠的双向通信,任何一方既可以接受请求,也可以向另一方发送请求。vJava中提供了用于实现客户端套接字的Socket类和用于实现服务器端套接字的ServerSocket类,它们封装了网络数据通信的底层细节,可以方便快捷地实现网络通信编程。三、三、TCP/IP协议体系结构协议体系结构vOSI/RM模型一般被作为网络研究使用。v目前Internet中使用最广泛的是TCP/IP协议,它是以TCP(Transmission Control Protocol,传输控制协议)和IP(Interconnection Protocol,互连网协议)为代表的协议集,被广泛用于解决计算机网络的互连问题,成为了事实上的工业标准。vTCP/IP协议体系结构分为个独立的层次,其结构如图10-2所示。vJava语言对TCP/IP协议提供了全面的支持。TCP/IP协议体系结构协议体系结构(图)(图)网络接口层网络接口层TELNET/23SMTP/25HTTP/80TCPUDPIP 以太网以太网FDDIX.25ATM应用层应用层传输层传输层互联网层互联网层TCP/IP协议协议vTCP协议(传输控制协议传输控制协议传输控制协议传输控制协议)它是支持面向连接(在客户端和服务器进程之间需要建立连接)的,“可靠”的字节流传输服务;它支持流量控制(发送数据的速度绝不超过接收的速度)和拥塞控制(当网络超负荷时,束紧发送端口减缓发送速度),但不提供实时性和最小带宽承诺。vUDP协议(用户数据报协议用户数据报协议用户数据报协议用户数据报协议)它是非面向连接(在客户端和服务器进程之间不需要建立连接)的,“不可靠”的数据传输服务;它不提供连接建立、可靠性保证、流量控制、拥塞控制、实时性和最小带宽承诺。IP地址与端口号地址与端口号v1IP地址IP地址是网络通信的重要概念,当前IPv4版本的地址由32个比特来表示,IPv6版本的地址由128个比特来表示。一个IP地址可代表Internet上某台计算机,根据IP地址就可以与其对应的计算机进行通信。IPv4地址是由点“.”分隔的4个0255的数字组成,比如192.168.1.128。IP地址由专门的国际机构负责其定义和分配使用,目前IP地址分为A、B、C、D、E五类。由于数字所表示的IP地址难记易忘,通常用符号化的域名来表示。域名服务器提供域名与IP地址之间相互转换服务,如域名对应212.194.120.3这样的IP地址。InetAddress类类v在java中,Ip地址是由一个称作InetAddress的特殊的类来描述。这个类没有公共的构造函数,但是提供了3个用来获得一个IntelAddress类实例的静态方法:getLocalHost()返回一个本地主机的InteAddress。getByName()返回对应于指定主机的InetAddress。getAllByName()对于某个主机有多个IP(多宿主机),可以返回一个IP地址数组。v额外方法:getAddress()获得一个用字节数组形式表示的IP地址getHostName()做反查询,获得对应于某个IP地址的主机名。套接字(套接字(socket)v套接字是进程之间的通信的抽象连接点。v进程之间想通信首先要建立套各自的套接口。客户程序可以向套接口里写入请求,然后服务器会处理这个请求,并把处理结果通过套接口送回。v具体来说,一个服务器应用程序一般侦听一个特定端口以等待客户的连接请求,当一个连接请求到达时,客户和服务器建立一个通信连接,在连接过程中,客户被分配一个本地端口号并且与一个Socket连接,客户通过写Socket来通知服务器,以读Socket来获取信息。类似地,服务企也获取一个本地端口号,它需要一个新的端口号来侦听原始端口上的其他连接请求。v服务器也给它的本地端口连接一个Socket并读写它来与客户通信。端口号端口号v虽然通过IP地址或域名实现了对网络中特定计算机的寻址,但这还不足以完成实际的通信。若接收端计算机的应用层有多个进程(运行中的程序),则发送到该计算机的数据包具体递交给哪个进程处理呢?通常借助于端口号来解决这个问题。端口号(Port Number)是存在于传输层与应用层的接口编号,它是用16个比特的地址来标识,可提供64K(065535)个端口号如应用层HTTP协议的默认端口号是80,FTP协议的默认端口号是20/21等。需要指出的是,端口号具有本地意义,只用来标识本计算机应用层中的各进程,不同计算机中的相同端口号之间没有固定联系,实际上,端口是一个抽象的定位符。v因此,在数据包接收端的计算机中,将根据传输层所收到的数据包的端口号进行判断,并将该数据包递交给合适的应用层进程来处理。四、四、SOCKET通信通信v1Socket通信原理网络中基于Socket通信的两个进程间建立连接时,会将其中一个进程作为客户端,而另一个进程作为服务器端。Socket通信机制是一种底层的通信机制。通过Socket的数据是原始字节流信息,通信双方必须依据约定的协议进行处理。v(1)基于Socket通信的C/S模型使用ServerSocket类和Socket类实现通信的C/S模型如图10-2所示。使用ServerSocket类和Socket类实现通信的C/S模型基于基于Socket通信的基本通信的基本步骤步骤vStep1:使用商定一致的端口分别创建Socket类和ServerSocket类对象;vStep2:服务器端ServerSocket类对象使用阻塞方法accept()监视端口;vStep3:打开连接到客户端Socket类对象的输入/输出流,向服务器端ServerSocket类对象发送相应请求,服务器接受客户请求并返回客户端Socket类的对象,从而建立连接;vStep4:通信双方按照一定的协议对Socket对象进行读/写操作。vStep5:关闭Socket。客户端进程客户端进程v它会按给定的服务器端的地址及端口号,建立客户端套接字Socket类的对象,并向服务器端发送请求,等待服务器的响应。建立客户端套接字的关键算法代码如下所示:try /创建客户端Socket类的对象socket,服务器地址取本地,端口号为55558 Socket socket=new Socket(localhost,55558);catch(UnknownHostException e)e.printStackTrace();catch(IOException e)e.printStackTrace();例、简单的客户端程序例、简单的客户端程序运行结果运行结果服务器端进程服务器端进程v它会按与客户端商定的端口号建立服务器端套接字ServerSocket类的对象,然后用ServerSocket对象的阻塞方法accept()监听该端口号中是否有客户端发送的请求。v若没有请求,则服务器进程会处于等待状态并一直监听端口;一旦接收到客户端发送的请求,accept()方法就会获取返回该客户端对象,从而在服务器端保存与客户端的连接,接下来就可利用该连接实现与客户端之间的数据交换。建立服务器端套接字及端口监听的关键算法代码:try /以55558为服务端口,创建服务器端的serversocket对象,以监听该端口上的连接ServerSocket serversocket=new ServerSocket(55558);/创建Socket类的对象socket,用于保存连接到服务器的客户端socket对象Socket socket=serversocket.accept();catch(IOException e)e.printStackTrace();v需要指出的是,服务器的端口号和客户端进程中指定的端口号应该一致,否则不能建立连接。实例、客户端与服务器端简单通信实例、客户端与服务器端简单通信vserver.javavclient.java基于基于UDP的的Datagram通信通信v前面介绍的基于TCP的Socket套接字编程是面向连接的、可靠的、端到端的通信。但实际应用中有时只需要发送和接收一些独立的信息,且不需要传输层协议提供可靠性保证。对此,传输层的用户数据报协议(User Datagram Protocol,UDP)提供了相应的通信支持。vUDP通常先把应用层所传递来的数据信息封装为一个个独立的数据报文,称为数据报(Datagram),数据报套接字将发送数据的目的地址记录在数据报中,直接将数据报在网络中传输;vUDP不能保证每个数据报是否能够安全、完整地到达目的主机,不能保证数据报的到达时间和到达顺序,但其传输效率比基于Socket套接字的传输效率高。v目前,基于UDP的网络应用有大量的实例,如在网络管理领域的SNMP(Simple Network Management Protocol,简单网络管理协议)所采用的就是UDP协议,目的是提高其网络管理数据接收和发送的效率。Datagram套接字套接字v在JDK API的包中提供了与UDP数据报相关的类有DatagramPacket类和DatagramSocket类,前者用于创建一个待发送或接收的DatagramPacket数据报对象,后者是创建一个用来发送或接收DatagramPacket数据报的DatagramSocket数据报套接字对象。v基于Datagram套接字通信的基本接收和发送流程如图10-8所示。图图10-8 Datagram套接字通信的发送和接收流程套接字通信的发送和接收流程DatagramPacket类类v使用Datagram方式实现通信,要将数据打包后才能进行传送和接收。而DatagramPacket类,就是用来创建数据包的,它创建的数据包分为以下两种。v(1)发送数据包它由发送进程创建并使用,该数据包中包含所要传送的数据信息,以及要传递到的目的地址。创建发送数据包的构造方法如表10-9所示。创建发送数据包的构造方法构造方法功能DatagramPacket(byte buf,int length,InetAddress address,int port)DatagramPacket(byte buf,int offset,int length,InetAddress address,int port)DatagramPacket(byte buf,int offset,int length,SocketAddress address)DatagramPacket(byte buf,int length,SocketAddress address)构造长度为length,发送到指定主机和端口号的发送数据包构造长度为length偏移量为offset,包发送到指定主机端口号的发送数据包构造将长度为length偏移量为offset,发送到指定套接字地址(主机+端口号)的发送数据包构造长度为length,发送到指定套接字地址(主机+端口号)的发送数据包接收数据包接收数据包v它由接收进程创建并使用。创建接收数据包的构造方法如表10-10所示。DatagramPacket类常用方法类常用方法vDatagramPacket类常用实例方法如表10-11所示。DatagramSocket类类v数据报套接字DatagramSocket类的主要作用是对DatagramPacket对象进行接收和发送,其主要构造方法如表10-12所示。表表10-13 DatagramSocket类的常用实例方法类的常用实例方法实例、基于实例、基于UDP的网络通信的网络通信ChartUDP.java运行结果运行结果ChartUDP.javap经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后Thank You在别人的演说中思考,在自己的故事里成长Thinking In Other PeopleS Speeches,Growing Up In Your Own Story讲师:XXXXXX XX年XX月XX日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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