IronsDu / brynet

A Header-Only cross-platform C++ TCP network library . We can use vcpkg(https://github.com/Microsoft/vcpkg/tree/master/ports/brynet) install brynet.
MIT License
1.04k stars 241 forks source link

客户端一次性发送大量数据给服务端 #104

Closed fjqisba closed 2 years ago

fjqisba commented 2 years ago

服务端回调函数中一次只能接受到1024个字节。。。这种情况需要怎么解决? 我想一次性接受全部的数据,在回调函数中处理。

fjqisba commented 2 years ago

我定义的包格式是四字节--包类型 + 四字节--数据长度 + 数据。

    session->setDataCallback([session](brynet::base::BasePacketReader& reader) {
        reader.useBigEndian();
        while (true) {
            if (!reader.enough(8)) {
                break;
            }
            auto dataType = reader.readINT32();
            auto dataLen = reader.readINT32();
            if (!reader.enough(dataLen)) {
                break;
            }

            onServerNewMsg(session, dataLen, reader.currentBuffer(), dataLen);
            reader.addPos(dataLen);
            reader.savePos();
        }
    });

不知道这样能不能解决吧。。。

fjqisba commented 2 years ago

好像修改最大接受缓冲区大小WithMaxRecvBufferSize(1024 * 100)就行了

IronsDu commented 2 years ago

好像修改最大接受缓冲区大小WithMaxRecvBufferSize(1024 * 100)就行了

是的。这是接收缓冲区的最大长度。