小坑:recv之后,传入参数“长度”变化

Posted 看,未来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小坑:recv之后,传入参数“长度”变化相关的知识,希望对你有一定的参考价值。

缘起:
分包嘛,我就想判断一下收到的数据跟预定的数据是否一样长。
然后代码写成这样:

int n = recv(fd, buf, lenth, 0);    //为什么走完这一步lenth就发生了突变
if (n != lenth)
{
    cout << "recv errno!" << endl; //这里应该写入日志,日志模块这不是还没开发嘛
    exit(-1);
}

然后就一直打印 recv errno!

然后我就去调试:

我本来后面的代码还用了 lenth 呢,不过现在看来不能用了,那要用什么?用n吗?如果分段接收,这个n会不会分段来啊?。。。那还怎么用,累加?


我发现我现在处理这些 bug 越来越波澜不惊了

以上是关于小坑:recv之后,传入参数“长度”变化的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf引用片段传入参数

java数组作为参数传入函数怎么让他不变化

PHP CURL 模拟form表单上传遇到的小坑

Python套接字接收 - 传入的数据包总是有不同的大小

手记注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed

linux recv函数返回值分析