从套接字递归处理数据?

时间:2016-02-24 10:36:44

标签: c++ sockets recursion boost

我在使用boost asio read_some()处理来自服务器的数据时遇到了问题。

数据格式为:83,数据长度,数据

问题:

我正在接收来自服务器的数据包,其中数据包可以包含单个数据或许多数据。 此外,可能存在我可以在2-3个数据包中接收单个数据的情况。 虽然我已经编写了相同的迭代逻辑,但我想知道some1是否可以为这类问题建议递归逻辑。 我对递归并不十分自信,因此非常感谢帮助。

另外,另一个问题是,如果使用boost asio read_some()读取数据的最大长度为1500字节?

2 个答案:

答案 0 :(得分:1)

根据评论,我认为递归在这里不是一个好选择。我必须坚持我的迭代方法。 感谢every1提供快速回复/建议

答案 1 :(得分:0)

将事物拆分为2个缓冲区,一个用于原始数据,一个队列用于完整数据包。
一些链接:

while(true) {
    receive data from socket
    append data to sendBuffer
    while( sendbuffer contains a complete packet) {
        move packet to packetQueue();
        removePacket from sendbuffer;
    }
}