-1

如何获取recv()in socket 通信返回的错误号或错误字符串,recv()返回-1为读取大小,这意味着发生了一些错误。我想知道错误的具体原因。所以我怎么能得到那个。

4

2 回答 2

9

您需要包含errno.h并使用errno全局变量来检查最后一个错误代码。此外,您可以使用strerror()打印解释错误的语言环境感知字符串。

例子

#include <errno.h>

ssize_t size;

if ((size = recv( ... )) == -1)
{
    fprintf(stderr, "recv: %s (%d)\n", strerror(errno), errno);
}
于 2016-01-18T12:24:02.710 回答
2

您可以使用头文件中的errno变量。errno.h

手册页强调我的)

返回值

成功完成后,recv()应返回消息的长度(以字节为单位)。如果没有可接收的消息并且对等方已经执行了有序关闭,recv()则应返回 0。否则,应返回 -1 并errno设置为指示错误。

或者,您也可以调用perror()/strerror()来获取与错误相关的人类可读字符串。

于 2016-01-18T12:21:06.433 回答