聊天设计与开发ppt课件.ppt_第1页
聊天设计与开发ppt课件.ppt_第2页
聊天设计与开发ppt课件.ppt_第3页
聊天设计与开发ppt课件.ppt_第4页
聊天设计与开发ppt课件.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1 网络编程 聊天室的设计与开发 2 第2讲网络编程 客户机和服务器基于Socket的网络编程基于UDP协议的Socket通信 网络运行机制 Java用于网络操作的功能包是 它包含多个访问各种标准网络协议的类包 Java的网络访问类包分别支持以下三个层次的网络运行机制 1 使用URL访问网络资源Java支持URL访问网络资源的机制 通过URL标识 可以直接使用http file ftp等多种协议 获取远程计算机上的资源 方便快捷地开发Internet应用程序 2 SocketSocket是建立在稳定连接基础上的以流传输数据的通信方式 它是目前实现客户 服务器模式应用程序的主要手段 Java提供了对应于Socket机制的一组类能按照用户约定的通信协议实现网络通信 这种方式适合开发特定功能的网络通信程序 网络运行机制 3 Datagram在网络实际发展中 有时需要采用面向非连接的 以数据报方式工作的通信方式 即在不建立连接的情况下进行数据的传输 这适用于网络不可靠环境下的数据传输和访问 这种方式称为Datagram 网络运行机制 6 客户机 服务器 Client Server 模式 简称C S模式 采用一种协同应用程序开发模型 是指由一个或多个客户机 一个或多个服务器以及操作系统和进程间的通信系统构成的一个复合系统 基于这种模式的一个应用程序被分为两个部分 分别运行于网络中不同的计算机上 由此充分利用网络共享资源 通过协议提高工作效率 1 客户机与服务器 7 基本组成 客户机 一个面向最终用户的接口设备或应用程序 它通过从另一个设备或应用程序 服务器 请求信息 然后将信息交给用户 客户机在整个任务中主要负责与用户对话 将用户的需求传达给服务器 等服务器安装此请示提供相应的服务后 将服务结果返回给用户 1 客户机与服务器 8 服务器 服务器的硬件通常具有强大的信息处理能力 主要完成数据处理任务 服务器提供的典型功能有建立进程和网络服务地址 如监听客户的请求处理客户请求 将响应结果交给用户 释放与客户机的连接 通信系统 客户机与服务器之间的通信不仅需要硬件连接 而更重要的是进行软件连接 软件连接是一种软件通信过程 如网络协议等 硬件连接主要用到网卡 网线等 1 客户机与服务器 9 C S模式的特点 位置透明 服务器可以驻留在与客户机相同或不同的处理器上 需要时 客户机 服务器平台可通过重新定向服务来掩盖位置 服务器过程的物理位置对用户透明 反之也是这样 共享资源 一个服务器可以同时为多个客户服务 并能控制存取共享资源 1 客户机与服务器 10 服务封装 客户过程只需知道服务器界面 不必了解其逻辑 可扩展性 支持水平和垂直扩展 前者指可以增加或更改节点 后者指可以转移到新的服务器处理器上 1 客户机与服务器 11 Socket也叫套接字 用来建立网络连接的一种通信方式 在Java中 利用Socket 插座 类可以很方便地进行网络编程 不需要知道你的电脑或对方的电脑是通过什么样的方式上网的 也不需要关心你们之间的距离 只要告诉Socket类你想和哪台电脑联系 其他的事Socket类自然会完成 从这个角度看 Socket类就像电源插座 2 基于TCP协议的Socket的网络编程 12 利用Socket类进行网络通讯时 首先要确定服务器和客户端 网络通讯是在两台电脑之间完成的 为了顺利建立连接 一般都采取一台电脑等候连接 而另一台电脑主动连接的方式 等待连接的电脑就叫做服务器 而主动连接的电脑叫做客户端 2 基于TCP协议的Socket的网络编程 13 客户端向服务器发送请求连接的信号 服务器接收到信号后 向客户端返回连接成功的信号 之后在二者之间就建立了一个连接通道 通道是双向的 服务器和客户端都可以通过这条通道向对方发送消息 二者的地位是相等的 2 基于TCP协议的Socket的网络编程 14 1 建立服务器端 建立服务器端对象 给出端口号 服务器端在这个端口等待客户端的连接调用accept函数监听端口 程序会停止在这里 一直等待客户端的连接当客户端连接到该端口之后 accept函数将建立一个Socket类 用于与客户端的通讯ServerSocket类会抛出IOException异常 必须用try catch结构捕获该异常建立服务器端的代码示例 try serverSocket newServerSocket 4444 SocketconnSocket serverSocket accept catch IOExceptione System out println 无法监听端口4444 System exit 1 2 基于TCP协议的Socket的网络编程 步骤1 15 2 建立客户端的步骤 创建一个Socket对象 对象构造函数的两个参数分别为服务器端的主机名以及端口号程序将不断连接远程计算机 直到连接成功之后 才继续执行下面的代码try clientSocket newSocket serverhost 4444 catch IOExceptione System out println 无法与服务器建立连接 System exit 1 建立连接之后 服务器端和客户端即可对等地利用I O流发送或者接收信息 2 基于TCP协议的Socket的网络编程 步骤2 16 3 发送消息的步骤 获得Socket类的输出流建立一个PrintWriter对象 利用它向网络输出利用println函数发送消息PrintWriterout newPrintWriter connSocket getOutputStream true out println 发送消息 2 基于TCP协议的Socket的网络编程 步骤3 17 4 接收消息的步骤 获得Socket对象的输入流新建一个读数据流的对象 以读取输入流将接收到的消息保存在缓存中调用缓存对象的readLine函数读入一行数据BufferedReaderin newBufferedReader newInputStreamReader connSocket getInputStream StringinStr in readLine BufferedReader对象是一个标准的读入 缓存数据对象 此对象缺省的缓冲区很大 足以放下收到的所有数据由于不知道通过网络会收到多少数据 因此先将接收到的数据暂存起来 然后再读取执行readLine函数时 会一直等到接收完一行数据之后才会继续执行下去 2 基于TCP协议的Socket的网络编程 步骤4 18 TCP IP协议下的Socket网络通信过程 在服务器端创建一个指定端口号的ServerSocket对象运行ServerSocket对象的accept 方法 在指定端口等待客户端请求 建立连接 在客户端创建一个指定计算机地址和与服务器端具有相同端口号的Socket对象 由Socket对象向服务器端发出连接请求 服务器端的ServerSocket对象接到请求信息后 创建一个Socket对象与客户端进行连接 连接建立后 服务器端和客户端可分别建立输入输出数据流进行数据传输 通信结束 关闭两端的Socket连接 服务器端调用ServerSocket对象的close 停止等待客户端请求 2 基于TCP协议的Socket的网络编程 步骤4 19 例8 2 服务器端程序 publicclassSocketServer publicstaticvoidmain String args throwsIOException ServerSocketss newServerSocket 8888 Sockets ss accept try System out println 有客户端请求连接 客户端IP地址 s getInetAddress getHostAddress 远程端口 s getPort 本地端口 s getLocalPort BufferedReaderin newBufferedReader newInputStreamReader s getInputStream PrintWriterout newPrintWriter newBufferedWriter newOutputStreamWriter s getOutputStream true 20 while true Stringstr in readLine if str equalsIgnoreCase exit break 忽略大小写System out println 接受客户端数据 str out println 服务器响应 str System out println 服务器退出 finally ss close 21 客户端SocketClient publicclassSocketClient publicstaticvoidmain String args throwsIOException Sockets newSocket 127 0 0 1 8888 try BufferedReaderin newBufferedReader newInputStreamReader s getInputStream PrintWriterout newPrintWriter newBufferedWriter newOutputStreamWriter s getOutputStream true 22 while true 从键盘采集一行数据BufferedReaderinkey newBufferedReader newInputStreamReader System in System out print 从键盘输入数据 Stringstr inkey readLine 读取一行out println str if str equalsIgnoreCase exit break Stringmsg in readLine System out println 从服务器收到数据 msg System out println 客户端退出 finally s close 23 1 先运行服务器端 显示空 然后运行客户端 此时 服务器端运行结果显示为 有客户端请求连接 客户端IP地址 127 0 0 1 远程端口 1376 本地端口 8888客户端运行结果显示为 从键盘输入数据 运行结果 24 2 然后在客户端输入 大连 后回车 则服务器端运行结果显示为 有客户端请求连接 客户端IP地址 127 0 0 1 远程端口 1376 本地端口 8888接受客户端数据 大连客户端运行结果显示为 从键盘输入数据 大连从服务器收到数据 服务器响应 大连从键盘输入数据 运行结果 25 3 再在客户端输入 exit 后回车 则服务器端运行结果显示为 有客户端请求连接 客户端IP地址 127 0 0 1 远程端口 1376 本地端口 8888接受客户端数据 大连服务器退出客户端运行结果显示为 从键盘输入数据 大连从服务器收到数据 服务器响应 大连从键盘输入数据 exit客户端退出 运行结果 26 基于UDP协议的信息传递具有速度快和可靠性不高的特点 可靠性不高表现为 数据在传输时 用户无法知道数据能否到达目标主机 数据到达目标主机的顺序是否和发出的顺序一致 也不能确定对方收到数据是否会回应 虽然UDP协议下的信息传输可靠性不高 但传输的速度快 因而在不追求可靠性的情况下 很适合采用这种协议 3 基于UDP协议的Socket通信 27 UDP协议下的Socket通信过程 在发送端用DatagramPacket类创建一个对象 将指定数据打包发送到指定计算机的端口 接收端用DatagramPacket类创建一个具有数据包指定端口的对象接收端创建一个数据包在接收端由DatagramPacket对象执行receive 方法可以用创建的数据包来接收从网络中传来的数据包 通信结束 3 基于UDP协议的Socket通信 28 例8 4 服务器接收端程序UDPServer java importjava io BufferedReader importjava io IOException importjava io InputStreamReader DatagramPacket DatagramSocket SocketException publicclassUDPServer publicstaticvoidmain String args throwsIOException 29 try 创建DatagramSocket对象 用来接收数据DatagramSocketsocks newDatagramSocket 1400 创建数据包 用于接收数据byte data newbyte 8192 DatagramPacketreceivePacket newDatagramPacket data data length 调用socks对象的receive方法接收数据 并存放到数据包中socks receive receivePacket 显示客户端信息System out println 有客户端请求连接 客户端IP地址 receivePacket getAddress getHostAddress 远程端口 receivePacket getPort 解析数据包 提取receivePacket 从0到总长度所有数据 中的数据转换为字符串Strings newString receivePacket getData 0 receivePacket getLength System out println 接收客户端的数据为 s 30 catch SocketExceptione e printStackTrace 31 例8 4 客户发送端程序UDPClien

温馨提示

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

最新文档

评论

0/150

提交评论