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