奇数socket()错误 - 返回-1,但是errno = ERROR_SUCCESS

时间:2010-01-04 14:47:33

标签: c++ c sockets errno

我正在使用C / C ++(混合)在linux机器上开发专用游戏服务器。我有以下代码片段:

int sockfd=socket(AI_INET, SOCK_DGRAM, 0);
if(sockfd==-1)
{
    int err=errno;
    fprintf(stderr,"%s",strerror(err));
    exit(1);
}

我的问题是套接字返回-1(意味着失败)并且正在打印错误字符串,但它是“成功”(ERROR_SUCCESS)。

其他说明:

  • 我在端口上请求套接字> 1024(脱离上下文,但我想提一下)
  • 我正在以超级用户身份执行该应用

2 个答案:

答案 0 :(得分:11)

我觉得非常愚蠢。仔细查看我的代码,在我的开发计算机上显示:

if(sockfd==-1);
...

答案 1 :(得分:1)

你有多个线程在运行吗?他们可能会覆盖errno值。

你遗漏了socket()和if()之间是否有任何代码行?另一个函数调用可能会覆盖错误。