第11章 java 网络编程.ppt_第1页
第11章 java 网络编程.ppt_第2页
第11章 java 网络编程.ppt_第3页
第11章 java 网络编程.ppt_第4页
第11章 java 网络编程.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

学习导读本章主要介绍Java语言网络运行机制 URL编程 Socket通信机制和数据报通信等基础知识 第11章Java网络编程 本章学习目标 基于URL的高层次Java网络编程 基于Socket的低层次Java网络编程 基于数据报DatagramJava网络编程 11 1Java网络运行机制 11 1 1网络基础知识网络上的计算机要互相通信 必须遵循一定的协议 目前使用最广泛的网络协议是Internet上所使用的TCP IP协议 11 1 2网络基本概念IP地址 标识计算机等网络设备的网络地址 由四个8位的二进制数组成 中间以小数点分隔 主机名 hostname 网络地址的助记名 按照域名进行分级管理 如 或端口号 portnumber 网络通信时同一机器上的不同进程的标识 如 80 21 23 25 其中0 1023为系统保留的端口号 服务类型 service 网络的各种服务 http telnet ftp smtp 11 1 3两类传输协议 TCP UDPTCP是 TransferControlProtocol 的简称 是一种面向连接的保证可靠传输的协议 通过TCP协议传输 得到的是一个顺序的无差错的数据流 发送方和接收方的成对的两个socket之间必须建立连接 以便在TCP协议的基础上进行通信 当一个socket 通常都是serversocket 等待建立连接时 另一个socket可以要求进行连接 一旦这两个socket连接起来 它们就可以进行双向数据传输 双方都可以进行发送或接收操作 UDP是 UserDatagramProtocol 的简称 是一种无连接的协议 每个数据报都是一个独立的信息 包括完整的源地址或目的地址 它在网络上以任何可能的路径传往目的地 因此能否到达目的地 到达目的地的时间以及内容的正确性都是不能被保证的 11 1 4Java网络运行机制Java用于网络操作的功能包是 它包含了多个访问各种标准网络协议的类库 Java支持URL访问网络资源的机制 通过URL标识 可以直接使用http file ftp等多种协议 以获取远程计算机上的资源信息 方便快捷地开发internet应用程序 Java的网络类库支持多种Internet协议 包括Telnet FTP和HTTP WWW 与此相对应的Java网络类库的子类库为 JJ ftpJ www contentJ www htmlJ www http 11 2URL编程11 2 1什么是URLURL UniformResourceLocator 是一致资源定位器的简称 它表示Internet上某一资源的地址 通过URL我们可以访问Internet上的各种网络资源 比如最常见的WWW FTP站点 浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源 URL的基本结构由5部分组成 protocol resourceName协议名 protocol 指明获取资源所使用的传输协议 如http ftp gopher file等 资源名 resourceName 则应该是资源的完整地址 包括主机名 端口号 文件名或文件内部的一个引用 例如 11 2 2URL编程1 URL编程为了表示URL 中实现了类URL 我们可以通过下面的构造方法来初始化一个URL对象 1 publicURL Stringspec 通过一个表示URL地址的字符串可以构造一个URL对象 例如 URLurlBase newURL 2 publicURL URLcontext Stringspec 通过基URL和相对URL构造一个URL对象 例如 URLindex263 newURL net263 index html 3 publicURL Stringprotocol Stringhost Stringfile 例如 newURL http pages G html 4 publicURL Stringprotocol Stringhost intport Stringfile 例如 URLgamelan newURL http 80 Pages Gwork html 类URL的构造方法都声明抛弃非运行时例外 MalformedURLException 因此生成URL对象时 我们必须要对这一例外进行处理 通常是用try catch语句进行捕获 格式如下 try URLmyURL newURL catch MalformedURLExceptione exceptionhandlercodehere 一个URL对象生成后 其属性是不能被改变的 但可以通过它给定的方法来获取这些属性 publicStringgetProtocol 获取该URL的协议名publicStringgetHost 获取该URL的主机名publicStringgetPort 获取该URL的端口号publicStringgetPath 获取该URL的文件路径publicStringgetFile 获取该URL的文件名publicStringgetRef 获取该URL在文件中的相对位置publicStringgetQuery 获取该URL的查询名 例11 1 创建URL对象属性 2 针对HTTP协议的URLConnection类通过URL的方法openStream 我们只能从网络上读取数据 如果我们同时还想输出数据 例如向服务器端的CGI程序发送一些数据 我们必须先与URL建立连接 然后才能对其进行读写 这时就要用到类URLConnection了 CGI是公共网关接口 CommonGatewayInterface 的简称 它是用户浏览器和服务器端的应用程序进行连接的接口 类URLConnection也在包中定义 它表示Java程序和URL在网络上的通信连接 当与一个URL建立连接时 首先要在一个URL对象上通过方法openConnection 生成对应的URLConnection对象 如果连接过程失败 将产生IOException Try URLnetchinaren newURL URLConnectonnniu netchinaren openConnection catch MalformedURLExceptione 创建URL 对象失败 catch IOExceptione openConnection 失败 通过URLConnection对象获取的输入流和输出流 可以与现有的CGI程序进行交互 URLConnection类的实例方法 PublicObjectgetContent throwsIOExceptionPublicintgetContentLength PublicStringgetContentType PubliclonggetDate PubliclonggetLastModified PublicInputStreamgetInputStream throwsIOExceptionPublicOutputSteramgetOutputStream throwsIOException 例11 2 使用URLConnection对象访问HTTP协议表示的远程文件 11 3Socket通信机制11 3 1Socket通讯网络上的两个程序通过一个双向的通讯连接实现数据的交换 这个双向链路的一端称为一个Socket Socket通常用来实现客户方和服务方的连接 Socket是TCP IP协议的一个十分流行的编程界面 一个Socket由一个IP地址和一个端口号唯一确定 在传统的UNIX环境下可以操作TCP IP协议的接口不止Socket一个 Socket所支持的协议种类也不光TCP IP一种 因此两者之间是没有必然联系的 在Java环境下 Socket编程主要是指基于TCP IP协议的网络编程 对于一个功能齐全的Socket 都要包含以下基本结构 其工作过程包含以下四个基本的步骤 创建Socket 打开连接到Socket的输入 出流 按照一定的协议对Socket进行读 写操作 关闭Socket 11 3 2Socket与ServerSocket类1 Socket与ServerSocket类java在包中提供了两个类Socket和ServerSocket 分别用来表示双向连接的客户端和服务端 这是两个封装得非常好的类 使用很方便 其构造方法如下 Socket InetAddressaddress intport Socket InetAddressaddress intport booleanstream Socket Stringhost intprot Socket Stringhost intprot booleanstream Socket SocketImplimpl Socket Stringhost intport InetAddresslocalAddr intlocalPort Socket InetAddressaddress intport InetAddresslocalAddr intlocalPort ServerSocket intport ServerSocket intport intbacklog ServerSocket intport intbacklog InetAddressbindAddr 在选择端口时 必须小心 每一个端口提供一种特定的服务 只有给出正确的端口 才能获得相应的服务 0 1023的端口号为系统所保留 例如http服务的端口号为80 telnet服务的端口号为21 ftp服务的端口号为23 所以我们在选择端口号时 最好选择一个大于1023的数以防止发生冲突 在创建socket时如果发生错误 将产生IOException 在程序中必须对之作出处理 所以在创建Socket或ServerSocket是必须捕获或抛出例外 主要方法 publicSocketaccept 等待客户端的连接publicvoidclose 关闭SocketpublicInetAddressgetInetAddress publicintgetLocalPort publicvoidsetSoTimeout inttimeout 这些方法都将抛出例外SocketException 程序中需要捕获处理 2 Socket与ServerSocket处理过程客户机 服务器在分布处理过程中 使用基于连接的网络通信模式 该通信模式首先在客户机和服务器之间定义一套通信协议 并创建一Socket类 利用这个类建立一条可靠的链接 然后 客户机 服务器再在这条链接上可靠地传输数据 客户机发出请求 服务器监听来自客户机的请求 并为客户机提供响应服务 这就是典型的 请求 应答 模式 下面是客户机 服务器的一个典型运作过程 服务器监听相应端口的输入 客户机发出一个请求 服务器接收到此请求 服务器处理这个请求 并把结果返回给客户机 重复上述过程 直至完成一次会话过程 例11 3 Socket通信的服务端程序 11 4数据报通信11 4 1数据报Datagram通讯前面在介绍TCP IP协议的时候 我们已经提到 在TCP IP协议的传输层除了TCP协议之外还有一个UDP协议 相比而言UDP的应用不如TCP广泛 几个标准的应用层协议HTTP FTP SMTP使用的都是TCP协议 但是 随着计算机网络的发展 UDP协议正越来越来显示出其威力 尤其是在需要很强的实时交互性的场合 如网络游戏 视频会议等 UDP更是显示出极强的威力 所谓数据报 Datagram 就跟日常生活中的邮件系统一样 是不能保证可靠的寄到的 而面向链接的TCP就好比电话 双方能肯定对方接受到了信息 11 4 2Datagram通讯的表示方法 DatagramSocket DatagramPacket包中提供了两个类DatagramSocket和DatagramPacket用来支持数据报通信 DatagramSocket用于在程序之间建立传送数据报的通信连接 DatagramPacket则用来表示一个数据报 先来看一下DatagramSocket的构造方法 DatagramSocket DatagramSocket intprot DatagramSocket intport InetAddressladdr 其中 port指明socket所使用的端口号 如果未指明端口号 则把socket连接到本地主机上一个可用的端口 laddr指明一个可用的本地地址 给出端口号时要保证不发生端口冲突 否则会生成SocketException类例外 注意 上述的两个构造方法都声明抛弃非运行时例外SocketException 程序中必须进行处理 或者捕获 或者声明抛弃 用数据报方式编写client server程序时 无论在客户方还是服务方 首先都要建立一个DatagramSocket对象 用来接收或发送数据报 然后使用DatagramPacket类对象作为传输数据的载体 下面看一下DatagramPacket的构造方法 DatagramPacket bytebuf intlength DatagramPacket bytebuf intlength InetAddressaddr intport DatagramPacket byte buf intoffset intlength DatagramPacket byte buf intoffset intlength InetAddressaddress intport 其中 buf中存放数据报数据 length为数据报中数据的长度 addr和port旨明目的地址 offset指明了数据报的位移量 在接收数据前 应该采用上面的第一种方法生成一个DatagramPacket对象 给出接收数据的缓冲区及其长度 然后调用DatagramSocket的方法receive 等待数据报的到来 receive 将一直等待 直到收到一个数据报为止 用数据报方式编写client server程序时 无论在客户方还是服务方 首先都要建立一个DatagramSocket对象 用来接收或发送数据报 然后使用DatagramPacket类对象作为传输数据的载体 下面看一下DatagramPacket的构造方法 DatagramPacket bytebuf intlength DatagramPacket bytebuf intlength InetAddressaddr intport DatagramPacket byte buf intoffset intlength DatagramPacket byte buf intoffset intlength InetAddressaddress intport 其中 buf中存放数据报数据 length为数据报中数据的长度 addr和port旨明目的地址 offset指明了数据报的位移量 在接收数据前 应该采用上面的第一种方法生成一个DatagramPacket对象 给出接收数据的缓冲区及其长度 然后调用DatagramSocket的方法receive 等待数据报的到来 receive 将一直等待 直到收到一个数据报为止 发送数据前 也要先生成一个新的DatagramPacket对象 这时要使用上面的第二种构造方法 在给出存放发送数据的缓冲区的同时 还要给出完整的目的地址 包括IP地址和端口号 发送数据是通过DatagramSocket的方法send 实现的 send 根据数

温馨提示

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

评论

0/150

提交评论