Open dygcjlu opened 6 months ago
请教个问题,我在客户端调用时,发现服务端的参数接收不完整. 参数结构体如下所示, 进一步测试发现如果数组某一位的数值是0的话,那之后的数据服务端就不接收了,请问是否有方法能够解决这个问题?
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); };
问题已经复现并定位到了,第三方库msgpack 里边对字符数组长度的处理使用的是strlen,strlen计算长度遇到'\0'会截断。所以不是服务端没有收到,是静态数组在客户端序列化的时候就被截断了。我这边把结构体里的静态数组换成std::vector后,结果就对了,你这边可以试试用vector替换现在的静态数组。
好的 我试下, 非常感谢
请教个问题,我在客户端调用时,发现服务端的参数接收不完整. 参数结构体如下所示, 进一步测试发现如果数组某一位的数值是0的话,那之后的数据服务端就不接收了,请问是否有方法能够解决这个问题?
define STEREO_MATCH_IMG_WIDTH 640
define STEREO_MATCH_IMG_HEIGHT 480