获取 recv 函数返回的错误号

Getting error number returned by recv function

如何获取套接字通信中recv()返回的错误号或错误字符串,recv()returns-1作为读取大小,这意味着有一些错误发生了。我想知道错误的具体原因。那我怎么才能得到它。

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

来自man page强调我的

Return Value

Upon successful completion, recv() shall return the length of the message in bytes. If no messages are available to be received and the peer has performed an orderly shutdown, recv() shall return 0. Otherwise, -1 shall be returned and errno set to indicate the error.

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

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

示例

#include <errno.h>

ssize_t size;

if ((size = recv( ... )) == -1)
{
    fprintf(stderr, "recv: %s (%d)\n", strerror(errno), errno);
}