一般的通信协议:数据包= 包头(命令码(1字节)+数据长度(2字节) ) + 数据(n字节)
包含的信息有:指令、源地址、目的地址、数据、校验等部分。
链路层协议:帧头 + 地址 + 命令字 + 数据 + 校验位(帧尾)
“
不要使用结构体,因为结构体必须定义足够的字符串的长度,这个长度当然是要适应最坏的情况,比如文件名为MAX_PATH的长度,但事实上,在很多情况下,我们实际传输的文件名长度并不需要这么多,这就加剧了网络传输的负担,降低了效率。
最好的通讯方式应该是:
定义数据包头 + 数据体
数据包头中包括:版本、数据包的长度(包头+包体,或只有包体,视你的兴趣和具体问题而定),包体标号(顺序号)等
包体中的数据包括:实际的数据。
其中包头信息的每个字段应该规定一定的长度。
”
校验方式: CRC校验 、 异或校验
-
来看看socket 通信协议的制定
|