[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:20702] Re: Q: DNS



越水です。

rubyのソースを眺めてみたのですが、どうもgetaddrinfoが怪しそうでした。
そこで、下のようなプログラムで試してみると、どうも推測が当たっているよ
うです。

ai_socktypeをAF_UNSPECにすると、外のDNSに問い合わせにいきます。

でも、AF_UNSPECを指定しないと、getaddrinfoの意味がないように思うのです
けど。

extern "C" {
#include <netdb.h>
}

#include <cstdio>
#include <cstring>
using namespace std;

int main(int argc, char* argv[])
{
  if (argc < 2) {
    return 1;
  }

  addrinfo hints;
  memset(&hints, 0, sizeof(hints));
  hints.ai_flags = AI_CANONNAME;
  hints.ai_socktype = SOCK_STREAM;
  if (argc > 2)
    hints.ai_family = AF_UNSPEC;
  else
    hints.ai_family = AF_INET;

  addrinfo *result;
  int error_id = getaddrinfo(argv[1], "daytime", &hints, &result);
  if (error_id) {
    fprintf(stderr, "%s\n", gai_strerror(error_id));
    exit(1);
  }
  printf("%s\n", result->ai_canonname);

  freeaddrinfo(result);
  return 0;
}

// 越水
// greentea@xxxxxxxxxxxxxxxx