Fla*_*ito 5 c++ parsing json tcp
我一直在寻找一种通过 tcp 套接字发送 JSON 并将其反序列化为对象的方法。我遇到的问题是,当我的消息太大时,TCP 会将其分块。通过这样做,我的客户只收到一部分 JSON,解析器将该部分和以下内容作为格式错误的 JSON 发送。
我正在寻找一种工具,可以让我用我的 JSON 的这个部分视图来提供它。第一次,我的缓冲区只包含部分 JSON,我将它发送到解析器,它返回一些指示 JSON 未完成的内容。下一次,当我将新信息附加到缓冲区时,解析器从它所在的最后一个点继续并找到 JSON 消息的结尾(或者等待,以防万一并且 JSON 出现在两个以上的块中)并返回带有该 JSON 内容信息的内容,并将其从缓冲区中删除,来自流的下一个信息将被附加到缓冲区中。
到目前为止,我发现了一些其他的想法,但对于其他语言(Java 中的这一点:是否有用于 JSON 的流 API?)
您有一些选择...一种是读取数据,直到出现一些特殊的字符序列(例如 https 使用\r\n\r\n)。如果您使用 boost C++ 库,您可以查看boost::asio::async_read_until或boost::asio::read_until。或者您可以实现以标记值停止的读取例程。
第二种选择是拥有数据包的头文件...在标头中,您可以指定消息的长度等。因此,您必须先阅读标题,然后再阅读正文。
| 归档时间: |
|
| 查看次数: |
1003 次 |
| 最近记录: |