跨平台(Windows+Linux)的Socket通讯程序(三)—通讯协议

本文介绍了跨平台(Windows+Linux)的Socket通讯程序中通讯协议的制定与解析,涉及TCP、UDP的选择,协议格式(二进制或文本),包大小限制,以及长连接与短连接的考量。此外,还探讨了协议解析的挑战和解决方案。
摘要由CSDN通过智能技术生成

跨机器的应用需要制定机器之间通讯的协议,本文在前两节的基础上,主要涉及通讯协议的制定与解析。

一、通讯协议的确定

通讯协议是机器之间交互的“语言格式”,一个合适的通讯协议,是跨机器应用的重要组成部分。
制定通讯协议之前,应考虑以下几方面的内容:
1.协议是一个通用的协议(例如是公司级的某应用领域的协议),还是某个特定应用的协议?
【优缺点不说大家也知道,特定应用协议效率高,解析方便,通讯协议的适用面广,但要牺牲一些效率。】
2.协议采用TCP、UDP传输,还是二者都可以?
【TCP与UDP的传输有自身的一些特点,当一次传输的包比较大时,TCP可以不考虑分包顺序问题,UDP需要考虑;而UDP无需考虑前后两个数据包“粘”在一起的现象,因此可以不需要诸如”包头“、”包尾“之类的东西。】
3.协议采用二进制格式,还是文本格式,如果采用文本格式,是否采用XML?
【二进制协议当然短小、效率高,但如果应用以传输文本为主,二进制是否合适就很难说了,以文本为基础的XML表达力强,扩展方便】
4.通讯时,双方采用“长连接”还是“短连接”?
【需要根据应用而定,从协议本身的组成上,就是通讯是否具有连续性】
5.一次通讯包的大小?
【一般需要指定一个最大值,否则会造成解析麻烦】
6.一次业务通讯来回交互的次数,是否采用“一问一答”式?
【需要根据应用而定,”问答“式协议,效率也许不高,但是一种实现起来比较简单的协议】

以上方面,仅供参考,当然,也可以考虑制定一个综合考虑以上因素的较全面的协议。

二、一个通用的通讯协议的组成
首先,这个协议是基于二进制的,基于文本的XML协议,可以考虑SOAP,其本身就是一个通用的、很强大的协议,本文不讨论SOAP,而是从基础起,构造一个协议。
一个协议大致上看起来如下:

数据包头
数据体
数据包尾

数据包头是整个数据包的描述,通常包括包起始标志、协议版本号、包大小、加密选项、验证码;数据体是具体传输的内容;数据包尾是可选的。对于“应答式"工作方式或采用UDP传输,除验证码之外&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值