搜索二进制值

时间:2014-05-21 17:04:56

标签: c++ sockets search binary

我试图找到一种方法来识别通过TCP套接字发送的数据块的开始。数据块具有作为前四个字节写入其中的整数1192的值,后跟内容长度。如何搜索此值的二进制数据(收到的char *)?我意识到我可以循环并每次将指针前进一个,复制出前四个字节并检查它,但这不是最优雅或可能有效的解决方案。

还有另一种方法可以做到我没想到的吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

听起来似乎需要线性扫描 ,但如果连接的发送方正在进行send() / {{{},那么您不应该丢失信息定位1}}以合理的方式打电话,你正在正确阅读你的缓冲区,并且没有不确定数量的"死亡"消息之间的流中的空间。

如果协议本身是合理的(至少有一个长度字段!),你永远不应该忘记消息边界。只需读取标记/长度对,然后读取write()有效负载字节,然后在此之后立即开始下一条消息,因此线性扫描不应该理想地任何地方

另外,请不要明确地复制,只是强制转换:

length