1

私はLinuxマシン上でC/C ++(混合)の専用ゲームサーバーを開発しています。次のコードスニペットがあります。

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 に答える