将额外的字节填充到要通过网络发送的flatbuffer的缓冲区指针
Padding extra bytes to flatbuffer's buffer pointer which is to be sent over the network
请查找此代码中的上下文。
auto normalized_log = CreateNormalizedLog(builder, pairs);
builder.Finish(normalized_log);
auto buffPtr = builder.GetBufferPointer();
SendUdpPacket(&ipInfo, reinterpret_cast<SOCKET>(ipInfo.hdle), buffPtr, builder.GetSize());
我需要打包创建的buffPtr的大小(固定两个字节)。在不复制整个缓冲区的情况下,是否有附加/偏移的首选方法?
我想我无法将大小添加到架构中,因为在收到之后,我应该知道大小,而不需要调用getRootAsNormalizedLog。
有没有办法将额外的字节添加到结果缓冲区中?
没有内置的功能来前缀缓冲区长度。您也不需要:UDP数据包(和大多数传输机制)知道其有效负载的大小,因此自己在其前面加前缀只是重复的信息。
也就是说,如果你坚持不复制,你可以做这样的事情:
auto size = static_cast<uint16_t>(builder.GetSize());
builder.PushElement(size);
这将为缓冲区添加一个16位大小的前缀。这种方法的问题是,缓冲区已经为其最大的元素对齐,因此缓冲区现在可能在目的地未对齐。因此,最好使用32位(或64位)长度,这取决于缓冲区中最大的标量。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- 通过网络、跨平台传递std::变体是否安全
- 如何在MNIST上提高网络运行的准确性
- Active Directory:从网络服务帐户下运行的Windows服务调用ADsOpenObject时失败
- OpenCV 4.1.2 - 从网络摄像头获取帧并将其拆分
- 使用OpenCV和覆盆子上的多个网络摄像头拍摄延时摄影,出现多个V4L错误
- 神经网络不学习.卡在50%
- 如何绑定 C++ gRPC 客户端的网络接口
- 将 FlatBuffer 对象序列化为 JSON,而不使用其架构文件
- 在本地网络中通过OpenCV(C++)实时流式传输图像
- 在不知道套接字的情况下关闭网络连接
- 是否有 Windows 用户空间函数来枚举连接的网络共享?
- 在没有管理员权限的情况下连接到同一网络中的命名管道
- 无法为 X.radio 创建中等可视化,因为找不到网络节点可视化 - Omnet++
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 像 POCO 这样的C++图书馆如何访问网络?
- 使用源读取器从网络摄像头源获取 H264 样本
- 如何将网络模块添加到 QT pro 文件中?
- 将额外的字节填充到要通过网络发送的flatbuffer的缓冲区指针