実用的なネットワークアプリケーションでは、しばしば「WWWシーナ。Com.cn」のようなものを使用機能を識別するために、このような代替ドメインネームサーバのIPアドレスは、ドメイン名と実際の変換のIPアドレスを必要とされます。
Linuxのは、関連するパラメータは、次の形式のホストを記述するために使用される構造netdb.hヘッダファイルに定義されています。
struct hostent
{
char *h_name;//主机的正式名称
char *h_aliases;//主机的别名
int h_addrype;//主机的地址类型
int h_length;//主机的地址长度
char **h_addr_list;//主机的IP地址列表
};
#define h_addr h_addr_list[0] //主机的第一个IP地址
ドメイン転送機能
Linuxは、ドメイン名とアドレスを処理するための変換のgethostbynameとはgethostbyaddr関数を提供します。
#include <netdb.h>
extern int h_errno;
struct hostent *gethostbyname(const char *name);
#include <sys/socket.h>
struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
- IPアドレス文字列変換パラメータ格納ポイントのホスト名のドメインまたはホスト名にドメイン名またはホスト名を実現するためにgethostbyname機能。
- IPアドレスまたはホストのドメイン名への変換を実現するためのgethostbyaddr関数、addrパラメータは、ポインタのアドレスを含む構造体へのポインタであり、パラメータはlenはIPv4の4の値で、この構造体の大きさであり、IPv6のためにその値の点で16、プロトコルファミリファミリ用のパラメータ。
- 呼び出しはNULLポインタは、グローバル変数を返し、適切な値はh_errnoに設定されて失敗した場合、これらの関数は、成功した場合、ポインタへのポインタが返されるhostent構造体と呼ばれています。
可能な値をはh_errno
h_errnno | 説明 |
---|---|
ホストが見つかりません | 対応するホストを見つけることができません |
再試行 | エラー再試行 |
NO_RECOVERY | エラーが発生した取り返しのつきません |
データなし | 名前は有効ですが、レコードを見つけられませんでした |
アプリケーション例
1. gethostbyname関数
2関数はgethostbyaddr