Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でホスト名とIPアドレスを取得して表示する方法

この記事では、C言語を使ってローカルシステムのホスト名とIPアドレスを簡単に取得・表示する方法を解説します。ホスト名とIPアドレスを調べるためのCプログラムを実際に書きながら、その仕組みを学んでいきましょう。

本プログラムでは、以下の関数を使用します。それぞれの関数には異なる役割があるため、まずは各関数の概要を確認しておきましょう。

使用する主な関数

関数名説明
gethostname()ローカルコンピュータの標準的なホスト名を取得します。
gethostbyname()ホストデータベースから、指定したホスト名に対応するホスト情報を検索します。
inet_ntoa()IPv4のインターネットネットワークアドレスを、ドット区切りの10進数形式(例:192.168.1.1)のASCII文字列に変換します。

サンプルコード

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
void check_host_name(int hostname) { // ローカルコンピュータのホスト名を返す関数
    if (hostname == -1) {
        perror("gethostname");
        exit(1);
    }
}
void check_host_entry(struct hostent * hostentry) { // ホスト名からホスト情報を取得する関数
    if (hostentry == NULL) {
        perror("gethostbyname");
        exit(1);
    }
}
void IP_formatter(char *IPbuffer) { // IP文字列をドット区切り10進数形式に変換する関数
    if (NULL == IPbuffer) {
        perror("inet_ntoa");
        exit(1);
    }
}
main() {
    char host[256];
    char *IP;
    struct hostent *host_entry;
    int hostname;
    hostname = gethostname(host, sizeof(host)); // ホスト名を取得
    check_host_name(hostname);
    host_entry = gethostbyname(host); // ホスト情報を取得
    check_host_entry(host_entry);
    IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0])); // IP文字列に変換
    printf("Current Host Name: %s\n", host);
    printf("Host IP: %s\n", IP);
}

コードの処理の流れ

このプログラムは、次の手順で動作します。

  1. gethostname() でローカルマシンのホスト名を取得し、エラーチェックを行います。
  2. 取得したホスト名をもとに gethostbyname() を呼び出し、ホストエントリ(IPアドレスなどの情報)を取得します。
  3. inet_ntoa() により、バイナリ形式のネットワークアドレスを人間が読める「ドット区切りの10進数」表記に変換します。
  4. 最後に、ホスト名とIPアドレスを標準出力に表示します。

実行結果

Current Host Name: soumyadeep-VirtualBox
Host IP: 127.0.1.1

なお、表示されるIPアドレスは環境によって異なります。上記の例ではループバックアドレス(127.0.1.1)が表示されていますが、ネットワークに接続された環境では、LANやWi-Fiに割り当てられた実際のIPアドレスが表示される場合もあります。また、このプログラムを実行する際は、Linux環境などPOSIX準拠のシステムでコンパイルすることをおすすめします。

  1. Tkinterウィンドウにホスト名とIPアドレスを表示する方法

    ユーザーのIPアドレスを取得するには、Pythonの標準ネットワーキングインターフェースであるsocketモジュールを使用します。まずデバイスのホスト名を照会し、その後に関連付けられたIPアドレスを取得するという流れになります。この記事では、socketライブラリを使ってホスト名とIPアドレスを取得し、それらを2つのラベルに表示する方法を解説します。実装の手順tkinterライブラリをインポートし、tkinterフレームのインスタンスを作成します。geometryメソッドを使ってフレームのサイズを設定します。次に、socketライブラリのgethostname()メソッドを使用してホスト名を取

  2. Gmailのメール表示名とアドレスを変更する方法を徹底解説

    Gmailでメールアドレスや名前を変更したい理由は人それぞれです。10代の頃に作ったメールアドレスに今となっては恥ずかしい名前が付いているのかもしれませんし、単に気分転換として変えたいだけかもしれません。理由が何であれ、この記事ではGmailのメール名やアドレスを変更する手順をわかりやすく解説します。メール名とメールユーザー名の違い多くの人は「メール名」と「メールユーザー名」は同じものだと考えていますが、実はそうではありません。メール名とは、メールを送信したときに相手側に表示される「差出人名」のことです。一方、メールユーザー名とはメールアドレスそのものを指します。Gmailの場合、ユーザー名は