2 chengbaifengyun chengbaifengyun 于 2015.06.11 18:27 提问

通信协议的定制???

我想定一个基于tcp的通信协议,定义好了协议头,也定义好了多个包体,但是不知道怎么把协议头和包体怎么通过socket发送,和接收!谁能教教我!

7个回答

91program
91program   Ds   Rxr 2015.06.11 18:40

协议,其实也是数据,只是发送的时候将实际要发送的数据与协议一起组包进行发送;同样,接收到数据,先按协议对数据进行处理:判断协议是否正确?如果正确,将其中的数据分离出来。

VisualEleven
VisualEleven   Ds   Rxr 2015.06.11 18:56

你的包头还不是个数据结构,和你的数据包可以一起发送出去,也可以先发包头,再发后面的具体的数据。

songhtao
songhtao   Rxr 2015.06.11 19:11

协议就是个数据格式或加密格式,按格式填数据就行了。

u013392086
u013392086   2015.06.11 20:02

我们平时一般的做法都是先发包头,在发数据,包头里面包含数据长度,令牌,序列号等信息

oyljerry
oyljerry   Ds   Rxr 2015.06.11 21:31

所有协议最终都会转成结构体形式,然后用字符数组方式以流发送,接收。

wokaonimama
wokaonimama   2015.06.11 22:38

看来你还是新手
我给你介意 发送数据不分包头包身.把发送内容以1024 为端直接发送.
接收端以1024 接收
如果数据结尾为很多零.表明数据接收完毕.
:先这么做 不要问为什么.

henuyx
henuyx   2015.06.14 17:43

对齐放到一块buffer里面,然后再send给socket就行了吧。 有一点可能要注意的是,如果有字符串的额时候,有两种处理方法:
第一种是固定长度的一个buffer发送即可,对方按照相同的结构体去解码即可
第二种是在字符串前面加一个表示长度的字段

chengbaifengyun
chengbaifengyun 这如果是变长的字符串应该申请多大的内存来接收数据呢?
2 年多之前 回复
chengbaifengyun
chengbaifengyun 这如果是变长的字符串应该申请多大的内存来接收数据呢?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片