因为tcp是数据流。所以1段数据可能会被分开发送或者接收,这样在服务器接受以后就存在1个问题。如何确认获取到的协议完整性?
这就需要服务器粘包处理。
C++游戏服务器协议部分一般都是采用 包长+协议号+数据
通过读取2或者4个字节包长,根据包长从数据流中提取固定长度的内容,然后判断协议号,对应到struct以后提取数据。
想一下最终决定采用json格式。
协议
提交部分
{
"lentgh":12,
"action":"register",
"username":"watsy",
"password":"123456"
}
其中length为整个json的长度
action为方法。
剩下的为提交的字段
返回
{
"status":1,
"errcode":0,
"action":"login",
"datas":{
"uid":1,
"name":"watsy",
"head":"xxxx.jpg",
"descriptio