TCP的粘包问题

TCP粘包这似乎是个老生长谈的问题,想不到还是在项目中给我遇到了。

服务器本来每次收取的就是客户端发送的简短的消息,即发送一次收一次,客户端也并没有频繁请求。不过却在有一次的测试中给报错了,看日志是解析数据出错,我想客户端发送的消息还是以前的,怎么到我这里来就解析出错了呢?不可能是掉包呀!再看解析错误的是什么数据,噢!原来是在后来的程序中我们服务器加上了与客户端的保活连接模块,然而我们在解析的代码里面并没有进一步的判断,而这次收到的数据却是既包含了正常请求数据+keepalive数据,于是就报异常了(话说以前我赶时间,这程序写的真渣…)。

Read More