JAVATCP协议通信_第1页
JAVATCP协议通信_第2页
JAVATCP协议通信_第3页
JAVATCP协议通信_第4页
JAVATCP协议通信_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、Java语言系列培训TCP协议通信目录 vTCP概念、协议族vJAVA NIOv网络字节序和主机字节序vTCP协议编解码vSOCKETvNETTY计算机网络的概念计算机网络是通过通信链路连接到一起的一组计算机或设备的集合,是现代通信技术与计算机技术相结合的产物。通过网络,不同计算机用户之间可以一起共享资源,如磁盘上的文件及打印机等,也可以彼此之间互相交换数据信息。按计算机连网区域的大小,可以把网络分为局域网(Local Area Network,LAN)城域网(Metropolitan Area Network,MAN)和广域网(Wide Area Network,WAN)网络体系结构与OSI

2、参考模型网络的体系结构指的是通信系统的整体框架。它的目的是为网络硬件、软件、协议、存取控制和拓扑结构提供标准。网络体系结构的关键要素是协议和拓扑。网络体系结构与OSI参考模型协议是指在计算机网络中,为进行网络中的数据交换而建立的规则、标准或约定的集合,如交换数据的格式、编码方式、同步方式等。协议定义了通信的方式和进行通信的时间,主要包括语法、语义和同步3个关键要素。语法:定义了所交换数据的格式和结构,以及数据出现的顺序。语义:定义了发送者或接受者所要完成的操作,包括对协议控制报文组成成分含义的约定。同步:定义了事件实现顺序以及速度匹配。体现在当两个实体进行通信时,数据发送的事件以及发送的速率。

3、网络体系结构与OSI参考模型OSI参考模型网络体系结构与OSI参考模型OSI参考模型传输数据的基本过程两主机间使用OSI参考模型交换数据的基本过程网络体系结构与OSI参考模型OSI参考模型传输数据的基本过程经过中间节点数据传递的过程TCP/IP的体系结构TCP/IP协议族TCP/IP的体系结构TCP/IP的工作过程客户机/服务器模型网络应用程序一般是以客户机/服务器模型(Client/Server,C/S)工作。客户机和服务器是指一次通信中的两个应用程序。主动发起联系的一方称为客户机程序,它为用户提供向网络请求服务的接口;而被动等待联系的一方称为服务器程序,它负责接受用户的服务请求,提供资源共

4、享,而且可以同时满足多个客户机的需求。客户机是服务请求方,服务器是服务提供方。客户机/服务器模型客户机/服务器模型的工作模型TCP (Transport Control Protocol )面向连接的能够提供可靠的流式数据传输的协议。类似于打电话的过程。URL, URLConnection, Socket, ServerSocket等类都使用TCP协议进行网络通讯。UDP (User Datagram Protocol )非面向连接的提供不可靠的数据包式的数据传输的协议。类似于从邮局发送信件的过程。DatagramPacket, DatagramSocket, MulticastSocket等

5、类使用UDP协议进行网络通讯。JAVA中TCP协议编程Java中与 Socket编程相关的包: import java.io.*; import .*;Java 中提供了两类的TCP Socket: 服务器端: .Serversocket 客户端: .socketJAVA中TCP协议编程JAVA中TCP协议编程(1)服务器建立监听进程,监听每个端口是否要求进行通信.(2)客户端创建一个Socket对象,向服务器端发送连接请求.(3)服务器监听到客户端的连接请求,创建一个Socket,与客户端进行通信.(4)建立接收和发送两个缓存区,并打开Socket及其输入、输出流.(5)根据协议读写Sock

6、et内容.(6)通信结束后关闭Socket.JAVA中TCP协议编程服务端ServerSocket示例客户端Socket示例JAVA中TCP协议编程从Socket中读数据JAVA IO与NIO阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时(或超时)才会返回;同样,在调用ServerSocket.accept()方法时,也会一直阻塞到有客户端连接才会返回,每个客户端连接过来后,服务端都会启动一个线程去处理该客户端的请求。阻塞I/O的通信模型示意图如下:JAVA IO与NIO阻塞IO缺点当客户端多时,会创建大量的处理线程。且每个线程都要占用栈空间和一些C

7、PU时间阻塞可能带来频繁的上下文切换,且大部分上下文切换可能是无意义的。JAVA IO与NIOJava NIO是在jdk1.4开始使用的,它既可以说成“新I/O”,也可以说成非阻塞式I/O。下面是java NIO的工作原理:由一个专门的线程来处理所有的 IO 事件,并负责分发。 事件驱动机制:事件到的时候触发,而不是同步的去监视事件。 线程通讯:线程之间通过 wait,notify 等方式通讯。保证每次上下文切换都是有意义的。减少无谓的线程切换。 JAVA IO与NIOMINANETTYServerSocketChannel主机字节序和网络字节序不同的CPU有不同的字节序类型 这些字节序是指整

8、数在内存中保存的顺序 这个叫做主机序最常见的有两种1 Little endian:将低序字节存储在起始地址2 Big endian:将高序字节存储在起始地址主机字节序和网络字节序不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序最常见的有两种1 Little endian:将低序字节存储在起始地址2 Big endian:将高序字节存储在起始地址x86系列CPU都是little-endian的字节序;例子:在内存中双字0 x01020304(DWORD)的存储方式内存地址4000 4001 4002 4003LE 04 03 02 01 BE 01 02 03

9、 04主机字节序和网络字节序网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序一般采用big endian排序方式。在网络程序开发时或是跨平台开发时,应该注意保证只用一种字节序 不然两方的解释不一样就会产生bug;网络字节序类型转换(INT-byte4) b3 = (byte) (val 0); b2 = (byte) (val 8); b1 = (byte) (val 16); b0 = (byte) (val 24);主机字节序和网络字节序示例:258(十进制) 00000010=00

10、 00 01 02(十六进制)=00000000 00000000 00000001 00000010(二进制)byte0= 00000000 00000000 00000001 00000010 24=00000000 00000000 00000000 00000000= 00000000byte1=00000000 00000000 00000001 00000010 1600000000 00000000 00000000 00000000= 00000000主机字节序和网络字节序byte2= 00000000 00000000 00000001 00000010 8=00000000

11、 00000000 00000000 00000001 = 00000001 byte3=00000000 00000000 00000001 00000010 1600000000 00000000 00000001 00000010 = 00000010 主机字节序和网络字节序网络字节序类型转换( byte4 -INT) int aaa=(b3 & 0 xFF) 0) + (b2 & 0 xFF) 8) + (b1 & 0 xFF) 16) + (b0 & 0 xFF) & | (加,减,乘,除,右移,左移,无符号右移,位与,位或,位异或)操作,均会

12、是首先将byte转化为int, 再行运算。主机字节序和网络字节序示例:byte0= 00000000 00000000 00000000 00000000&1111111124=00000000 00000000 00000000 00000000byte1= 00000000 00000000 00000000 00000000&11111111 16=00000000 00000000 00000000 00000000主机字节序和网络字节序byte2=00000000 00000000 00000000 00000001&111111118=00000000 00

13、000000 00000001 00000000byte3= 00000000 00000000 00000000 00000010&11111111 0=00000000 00000000 00000000 00000010btye0|byte1|byte2|byte3|00000000 00000000 00000001 00000010=00 00 01 02(十六进制)=258(十进制)示例见SVN源码https:/qcsvn/svn/RDTrain/branches/TcpTrain内容回顾本节内容回顾v网络字节序v消息打包解包vNETTY服务使用vSOCKT客户端使用v欢迎各位提问习题习题上传地址:https:/qcsvn/svn/RDTrain/tags/train/TCP工程名:tcp_姓名全拼习题字段名字段名类型类型长度长度备注备

温馨提示

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

评论

0/150

提交评论