获取 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);
}
如何获取套接字通信中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 anderrno
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);
}