获取recv函数

时间:2016-01-18 12:18:34

标签: c linux return-value errno strerror

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

2 个答案:

答案 0 :(得分:7)

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

实施例

#include <errno.h>

ssize_t size;

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

答案 1 :(得分:2)

您可以使用 protected void grdview_RowDataBound(object sender, EventArgs e) { if(!admin()) { grdview.Columns[5].Visible = true; } else { //do something } } 头文件中的errno变量。

来自man page强调我的

  

返回值

     

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

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