我想定一个基于tcp的通信协议,定义好了协议头,也定义好了多个包体,但是不知道怎么把协议头和包体怎么通过socket发送,和接收!谁能教教我!
协议,其实也是数据,只是发送的时候将实际要发送的数据与协议一起组包进行发送;同样,接收到数据,先按协议对数据进行处理:判断协议是否正确?如果正确,将其中的数据分离出来。
你的包头还不是个数据结构,和你的数据包可以一起发送出去,也可以先发包头,再发后面的具体的数据。
协议就是个数据格式或加密格式,按格式填数据就行了。
我们平时一般的做法都是先发包头,在发数据,包头里面包含数据长度,令牌,序列号等信息
所有协议最终都会转成结构体形式,然后用字符数组方式以流发送,接收。
看来你还是新手
我给你介意 发送数据不分包头包身.把发送内容以1024 为端直接发送.
接收端以1024 接收
如果数据结尾为很多零.表明数据接收完毕.
:先这么做 不要问为什么.
对齐放到一块buffer里面,然后再send给socket就行了吧。 有一点可能要注意的是,如果有字符串的额时候,有两种处理方法:
第一种是固定长度的一个buffer发送即可,对方按照相同的结构体去解码即可
第二种是在字符串前面加一个表示长度的字段