1

我正在使用 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 上的套接字(断章取义,但我想我会提到)
  • 我正在以超级用户身份执行应用程序
4

2 回答 2

11

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

if(sockfd==-1);
...
于 2010-01-04T14:58:18.480 回答
1

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

socket() 和 if() 之间是否有您遗漏的代码行?另一个函数调用可能会覆盖 errno。

于 2010-01-04T14:56:28.473 回答