JAVA TCP协议通信.pptx_第1页
JAVA TCP协议通信.pptx_第2页
JAVA TCP协议通信.pptx_第3页
JAVA TCP协议通信.pptx_第4页
JAVA TCP协议通信.pptx_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

Java语言系列培训 TCP协议通信 目录 TCP概念 协议族JAVANIO网络字节序和主机字节序TCP协议编解码SOCKETNETTY 计算机网络的概念 计算机网络是通过通信链路连接到一起的一组计算机或设备的集合 是现代通信技术与计算机技术相结合的产物 通过网络 不同计算机用户之间可以一起共享资源 如磁盘上的文件及打印机等 也可以彼此之间互相交换数据信息 按计算机连网区域的大小 可以把网络分为局域网 LocalAreaNetwork LAN 城域网 MetropolitanAreaNetwork MAN 和广域网 WideAreaNetwork WAN 网络体系结构与OSI参考模型 网络的体系结构指的是通信系统的整体框架 它的目的是为网络硬件 软件 协议 存取控制和拓扑结构提供标准 网络体系结构的关键要素是协议和拓扑 网络体系结构与OSI参考模型 协议是指在计算机网络中 为进行网络中的数据交换而建立的规则 标准或约定的集合 如交换数据的格式 编码方式 同步方式等 协议定义了通信的方式和进行通信的时间 主要包括语法 语义和同步3个关键要素 语法 定义了所交换数据的格式和结构 以及数据出现的顺序 语义 定义了发送者或接受者所要完成的操作 包括对协议控制报文组成成分含义的约定 同步 定义了事件实现顺序以及速度匹配 体现在当两个实体进行通信时 数据发送的事件以及发送的速率 网络体系结构与OSI参考模型 OSI参考模型 网络体系结构与OSI参考模型 OSI参考模型传输数据的基本过程两主机间使用OSI参考模型交换数据的基本过程 网络体系结构与OSI参考模型 OSI参考模型传输数据的基本过程经过中间节点数据传递的过程 TCP IP的体系结构 TCP IP协议族 TCP IP的体系结构 TCP IP的工作过程 客户机 服务器模型 网络应用程序一般是以客户机 服务器模型 Client Server C S 工作 客户机和服务器是指一次通信中的两个应用程序 主动发起联系的一方称为客户机程序 它为用户提供向网络请求服务的接口 而被动等待联系的一方称为服务器程序 它负责接受用户的服务请求 提供资源共享 而且可以同时满足多个客户机的需求 客户机是服务请求方 服务器是服务提供方 客户机 服务器模型 客户机 服务器模型的工作模型 TCP TransportControlProtocol 面向连接的能够提供可靠的流式数据传输的协议 类似于打电话的过程 URL URLConnection Socket ServerSocket等类都使用TCP协议进行网络通讯 UDP UserDatagramProtocol 非面向连接的提供不可靠的数据包式的数据传输的协议 类似于从邮局发送信件的过程 DatagramPacket DatagramSocket MulticastSocket等类使用UDP协议进行网络通讯 JAVA中TCP协议编程 Java中与Socket编程相关的包 importjava io Java中提供了两类的TCPSocket 服务器端 Serversocket客户端 socket JAVA中TCP协议编程 JAVA中TCP协议编程 1 服务器建立监听进程 监听每个端口是否要求进行通信 2 客户端创建一个Socket对象 向服务器端发送连接请求 3 服务器监听到客户端的连接请求 创建一个Socket 与客户端进行通信 4 建立接收和发送两个缓存区 并打开Socket及其输入 输出流 5 根据协议读写Socket内容 6 通信结束后关闭Socket JAVA中TCP协议编程 服务端ServerSocket示例 客户端Socket示例 JAVA中TCP协议编程 从Socket中读数据 JAVAIO与NIO 阻塞I O在调用InputStream read 方法时是阻塞的 它会一直等到数据到来时 或超时 才会返回 同样 在调用ServerSocket accept 方法时 也会一直阻塞到有客户端连接才会返回 每个客户端连接过来后 服务端都会启动一个线程去处理该客户端的请求 阻塞I O的通信模型示意图如下 JAVAIO与NIO 阻塞IO缺点当客户端多时 会创建大量的处理线程 且每个线程都要占用栈空间和一些CPU时间阻塞可能带来频繁的上下文切换 且大部分上下文切换可能是无意义的 JAVAIO与NIO JavaNIO是在jdk1 4开始使用的 它既可以说成 新I O 也可以说成非阻塞式I O 下面是javaNIO的工作原理 由一个专门的线程来处理所有的IO事件 并负责分发 事件驱动机制 事件到的时候触发 而不是同步的去监视事件 线程通讯 线程之间通过wait notify等方式通讯 保证每次上下文切换都是有意义的 减少无谓的线程切换 JAVAIO与NIO MINANETTY ServerSocketChannel 主机字节序和网络字节序 不同的CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序这个叫做主机序最常见的有两种1 Littleendian 将低序字节存储在起始地址2 Bigendian 将高序字节存储在起始地址 主机字节序和网络字节序 不同的CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序这个叫做主机序最常见的有两种1 Littleendian 将低序字节存储在起始地址2 Bigendian 将高序字节存储在起始地址x86系列CPU都是little endian的字节序 例子 在内存中双字0 x01020304 DWORD 的存储方式内存地址4000400140024003LE04030201BE01020304 主机字节序和网络字节序 网络字节顺序是TCP IP中规定好的一种数据表示格式 它与具体的CPU类型 操作系统等无关 从而可以保证数据在不同主机之间传输时能够被正确解释 网络字节顺序一般采用bigendian排序方式 在网络程序开发时或是跨平台开发时 应该注意保证只用一种字节序不然两方的解释不一样就会产生bug 网络字节序类型转换 INT byte 4 b 3 byte val 0 b 2 byte val 8 b 1 byte val 16 b 0 byte val 24 主机字节序和网络字节序 示例 258 十进制 00000010 00000102 十六进制 00000000000000000000000100000010 二进制 byte 0 00000000000000000000000100000010 24 00000000000000000000000000000000 00000000byte 1 00000000000000000000000100000010 1600000000000000000000000000000000 00000000 主机字节序和网络字节序 byte 2 00000000000000000000000100000010 8 00000000000000000000000000000001 00000001byte 3 00000000000000000000000100000010 1600000000000000000000000100000010 00000010 主机字节序和网络字节序 网络字节序类型转换 byte 4 INT intaaa b 3 0 xFF 加 减 乘 除 右移 左移 无符号右移 位与 位或 位异或 操作 均会是首先将byte转化为int 再行运算 主机字节序和网络字节序 示例 byte 0 00000000000000000000000000000000 11111111 24 00000000000000000000000000000000byte 1 00000000000000000000000000000000 11111111 16 00000000000000000000000000000000 主机字节序和网络字节序 byte 2 00000000000000000000000000000001 11111111 8 00000000000000000000000100000000byte 3 00000000000000000000000000000010 11111111 0 00000000000000000000000000000010btye 0 byte 1 byte 2 byte 3 00000000000000000000000100000010 00000102 十六进制 258 十进制 示例 见SVN源码https qcsvn svn RDTrain branches TcpTrain 内容回顾 本节内容回顾网络字节序消息打包解包NETT

温馨提示

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

评论

0/150

提交评论