通信协议学习总结
在网络通信学习过程中,通信协议由消息格式和通信流程构成。
1.消息格式
XML语言,即可扩展文本标记语言。我们所熟悉的HTML语言(超文本标记语言)也是XML语言的一种。在通信过程中为什么要学习使用XML格式的消息格式?之前我们在网络上传送消息时,都是以"\r\n"作为一条消息的结束符标志。而我们知道一条消息中常常包含有多种不同类型的信息,例如登陆QQ时,客户端发送给服务器的消息就至少包含登录用户QQ号、密码、登录状态等不同种类的信息。之前的使用的消息格式都是以换行符作为结束标志,根本不可能在一条消息中包含多种类型的信息。而XML格式的很好地解决了这个缺陷。
XML格式消息中,每一个标签对中的内容代表一种类型的消息内容,标签对中还可以再嵌套标签对,这样更加丰富了一条完整消息所能容纳的信息类型。
例如:在HTML语言中,以<HTML></HTML>作为根标签,网页显示的所以内容都包含在<HTML></HTML>根标签中。
<title></title>表示网页标题,<body></body>中的内容即为显示的正文部分。网页正是使用了这种格式,使得网页能呈现各种我们想要的效果。
我们把这个格式应用于简单网络聊天程序中,可以增加消息的容量和程序的功能。
在采用这个格式后,我们可以自己定义各种标签,以及标签所代表的含义。如可以规定<msg></msg>表示一条
完整的消息,其中可以包含各种类型的信息,如用户名,密码等等。
2.通信流程
除了消息格式很重要外,还有通信流程很重要。通信流程中有同步和异步两种类型。
同步消息:指的是通信一方给另一方发送消息后,一定要等到另一方回复应答消息,才会进行下一步操作,否则就一直卡在这里。
比如:登陆QQ时,如果服务器没有给出登陆成功或者失败的应答消息,客户端将会一直请求登陆,直到请求超时。
异步消息:通信一方发给另一方的消息,不用等待对方的回复应答。
例如,我们可以随意给好友发送消息,而不用管对方是否回复消息。
只要我们规定好了通信协议,即消息格式和通信流程,用代码实现就是比较简单的事了。然而,通信协议的制定往往更难,因为在平常生活中,我们都是在遵守别人制定的规则,现在要我们自己去制定一套规则,就会感觉到无从下手。我们要自己尝试着去制定一套自己的通信协议,多多观察我们经常使用的聊天系统,有助于我们制定一个比较系统完整的通信协议。