qicosmos / rest_rpc

modern C++(C++11), simple, easy to use rpc framework
MIT License
1.66k stars 365 forks source link

服务端接收数据不完整 #115

Open dygcjlu opened 6 months ago

dygcjlu commented 6 months ago

请教个问题,我在客户端调用时,发现服务端的参数接收不完整. 参数结构体如下所示, 进一步测试发现如果数组某一位的数值是0的话,那之后的数据服务端就不接收了,请问是否有方法能够解决这个问题?

define STEREO_MATCH_IMG_WIDTH 640

define STEREO_MATCH_IMG_HEIGHT 480

struct StereoData
{
    int nH;
    int nW;
    int nC;
    char leftImg[STEREO_MATCH_IMG_WIDTH * STEREO_MATCH_IMG_HEIGHT * 3];
    char rightImg[STEREO_MATCH_IMG_WIDTH * STEREO_MATCH_IMG_HEIGHT * 3];
    MSGPACK_DEFINE(nH, nW, nC, leftImg, rightImg);
};
zhengjian526 commented 6 months ago

问题已经复现并定位到了,第三方库msgpack 里边对字符数组长度的处理使用的是strlen,strlen计算长度遇到'\0'会截断。所以不是服务端没有收到,是静态数组在客户端序列化的时候就被截断了。我这边把结构体里的静态数组换成std::vector后,结果就对了,你这边可以试试用vector替换现在的静态数组。 image

dygcjlu commented 6 months ago

好的 我试下, 非常感谢