おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

ドメイン名からIPアドレスをゲットする。

Networkプログラミングの初歩の初歩。
とりあえずドメイン名から、IPを取得しましょう。

#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>

int main(void){
    struct hostent *he;

    if((he=gethostbyname("www.google.com"))==NULL)
        exit(1);

    printf("---\n");
    printf("%d.%d.%d.%d\n",
           (unsigned char)*((he->h_addr_list[0])),
           (unsigned char)*((he->h_addr_list[0])+1),
           (unsigned char)*((he->h_addr_list[0])+2),
           (unsigned char)*((he->h_addr_list[0])+3));

    return 0;
}

関数について

#include <netdb.h>

struct hostent *gethostbyname(const char *hostname);

構造体について

struct hostent{
    char *h_name;       //hostname
    char **h_aliases;    //hostname list
    int    h_addrtype;   //address type
    int    h_length;       //length of address
    char **h_addr_list; // address list
#define h_addr h_addr_list[0]
}

参考図書:

基礎からわかるTCP/IP ネットワーク実験プログラミング―Linux/FreeBSD対応

基礎からわかるTCP/IP ネットワーク実験プログラミング―Linux/FreeBSD対応