getaddrinfo(エラー処理)
getaddrinfoもgethostbynameと同じようにperrorではないエラー解析関数があります。 ここでは、getaddrinfoがエラーで終了したときにgai_strerrorを利用してエラー内容を表示させる方法を説明します。
単純な例
とりあえず、簡単なサンプルを書いてみます。 下記サンプルでは、無効な引数を使ってgetaddrinfoを利用しています。
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int
main()
{
int err;
if ((err = getaddrinfo(NULL, NULL, NULL, NULL)) != 0) {
printf("error %d : %s\n", err, gai_strerror(err));
return 1;
}
return 0;
}
上記サンプルでは、無効な引数でgetaddrinfoを利用して変数errが0ではない値になるようにしています。 getaddrinfoが失敗した後には、if文の中でgai_strerrorが返すエラー説明文字列をprintfすることによりエラー内容を表示しています。
上記サンプルの実行結果は、私の環境では以下のようになりました。
error -2 : Name or service not known