我们的“协议”:
到目前为止,我们已经简单了解了通信的基本模型,Server—Client模型,这里以简单聊天工具为例:1、服务端启动——2、客户端启动,并试图与服务端建立连接——3、服务端根据条件(通常是根据客户端发送过来的某种特殊消息,分析其中的账号,密码)发送响应给发送请求的客户——4、若同意,客户端获得某种使用功能的权利——5、服务端发送包含特定接收对象的聊天消息给服务端——6、服务端转发聊天消息,并goto步骤5
由上面的简单例子,我们可以看到,通信的双方在通信时有特定的步骤。只有双方都按正确步骤来执行,通信才能有质量的实现。当有一方违反这种规则的时候,那就整个乱套了:你能不通过登陆,就直接用QQ发送消息给你的朋友么??
其实,上面提到的概念就是通信协议中的两大核心概念之一:流程。
流程,简单的说,也就是我们规定的通信双方发送信息的先后顺序。
流程是很重要的,因为通信的一方一般在某个特定阶段只能接受特定种类的消息。还是用简单聊天系统来举例,服务器在某个客户端登陆以前是这能接受“注册”或者“登陆”消息的,如果这个时候它接受到了其他种类的消息(如客户端流程不正确,发送了一条“聊天消息”),服务器实际上是分辨不出来,而把它当做错误消息来处理的,一般是断开连接,严重的可能会导致系统崩溃。
任何一个能正常运行的网络程序都是高度契合的。
在上文中,我多次提到了消息的“种类”,这就是通信协议中的另一个核心:消息的定义。
我们知道,通信中信息的发送与接收是通过IO流来实现的,而底层IO流传输的01串,那么,怎样通过01串来表示要传输的数据呢??
很容易想到,是编码!!我们按照规则用特定的字符来表示特定的含义。当然,这个规则必须是事先定义好的,而且必须是通信双方都知道,且严格遵守的。
简单的规则定义方式有2种:一种是字节型,一种是xml型。
字节型: 如我们事先规定发送的第一个byte是表示消息的类型,1表示群聊消息,第2到第四个byte(即一个int)表示聊天消息的大小,后面N个字节表示聊天内容。那么当我们接收到 1 6 1 3 47 2 89 20 的时候,我们就可以把他们翻译成相应的消息了,将后6个byte:1 3 47 2 89 20 转为相应的String就行了。
xml型: (Extensible Markup Language)即可扩展标记语言,这里我就不copy定义了,google一下就知道了。我只举个例子: <msg><type>GroupChat</type><content>.........</content></msg> 这就是我曾经定义过的一个群聊消息。当服务端接收到这个来自客户端 的字符串的时候,通过分析结构,就知道该怎么处理了。
值得注意的是:消息格式的定义是因程序而异的,不同的程序有其独特的定义,而且这种定义是唯一的,是必须在事先定义好的。
网络上的“协议”:
我们上网也是享受通信服务,其中的数据传输同样要受到某种协议的约定,这种协议的名字叫做:TCP/IP协议族。
今晚就不写了,累了,以后有时间再简单讨论(真的是“简单”的说,这玩意太复杂了,看书看的泪奔了,5555)
具体可以去参阅一本名叫《TCP/IP协议详解》的书
分享到:
相关推荐
这是一个UDP协议通信的程序! 这是一个UDP协议通信的程序!
北斗通信设备通用的协议,串口通信与北斗卫星的通信协议,
lvds通信协议程序,已调通,并包含一些相关资料
基于单片机的USB通信程序,包括完整的通信协议
火灾报警控制器数据输出通信协议,协议为RS-485总线协议,协议规定数据结构,设备类型等,设备控制字等。
电动汽车快换电池箱电子控制单元通信协议(CAN)
网络通信协议编程,实现HTTP协议的VC源码,有服务器与客户机!!!!绝对可用
ACE_Proactor TCP协议通信示例代码
C8051F带通信协议的串口通信通信程序,上位机发送0xAA,单片机收到后反馈0xBB,通信开始。通信结束后发送0xCC。
VisualC__网络通信协议分析.rar 好例子,不多说了看了就知道
udp通信协议 软件设计用 可恶的20字
红外通信协议,无线方面的,献给想了解红外技术的GG和MM
三菱PLC MC通信协议。可以参照此格式在不同语言中编写上位机与三菱PLC通信的代码 。
matlab无线通信协议wifi仿真工具箱
关于GPRS通信的通信协议,有助于编程,开发人员需了解模块的使用要点
[046]通信技术基础_区别_协议标准_串并行_同异步_全双工_波特率_比特率.zip上位机开发VC串口学习资料源码下载[046]通信技术基础_区别_协议标准_串并行_同异步_全双工_波特率_比特率.zip上位机开发VC串口学习资料源码...
SICK_仪器通信协议 德国施克LMS激光扫描仪通讯协议
Q系列MELSEC通信协议参考手册,采用 MC 协议进行通讯,用 ASCII 代码进行通讯 读出内部继电器
高速串行通信的现状,并简要介绍了Aurora通信协议的特点,发展和现状。着重介绍了Aurora协议的原理,接口及应用等相关知识。
X_25通信协议及通信方式_周榕,卢泽新