総合手引 | セクション 3 | オプション |
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
addr2ascii() 関数は、バイナリのネットワーク形式のアドレスを印字可能な形式に 変換するのに使用されます。 af の他に、 3 つの引数を持ちます。 addrp 引数は、変換するネットワークアドレスへのポインタです。 len 引数は、アドレスの長さです。 buf 引数は、結果を保持するために呼び出し元が割り振る バッファへのオプションのポインタです。 ヌルポインタが渡されると、 addr2ascii() は静的に割り振られたバッファを使用します。
ascii2addr() 関数は、 addr2ascii() と逆の操作を実行します。 af に加えて、2 つのパラメータ ascii と result を使用します。 ascii パラメータは、バイナリに変換される文字列へのポインタです。 result パラメータは、指定されたファミリに適切なネットワークアドレス構造体への ポインタです。
指定されたファミリにおいて使用されるバイナリアドレスとして 適切な構造体は次のとおりです。
AF_INET | struct in_addr (in < netinet/in.h>) |
AF_LINK | struct sockaddr_dl (in < net/if_dl.h>) |
#include <sys/types.h> #include <sys/socket.h> #Include <netinet/in.h> #include <arpa/inet.h>char * inet_ntoa(struct in_addr addr) { return addr2ascii(AF_INET, &addr, sizeof addr, 0); }
int inet_aton(const char *ascii, struct in_addr *addr) { return (ascii2addr(AF_INET, ascii, addr) == sizeof(*addr)); }
実際には、これは実行できません。 addr2ascii() と ascii2addr() は、他の方法でなく、 inet(3) 関数で実装されているからです。
[ENAMETOOLONG] | |
addr2ascii() ルーチンは、 af によって渡されたアドレスファミリに不適切なパラメータ len を渡されました。 | |
[EPROTONOSUPPORT] | |
いずれかのルーチンに、 AF_INET または AF_LINK ではない af パラメータが渡されました。 | |
[EINVAL] | |
ascii2addr() に渡された文字列は、 アドレスファミリ af について不適切にフォーマットされていました。 | |
このインタフェースの一般性については、いくらか疑問があります。 本当に一般的なインタフェースであれば、バッファを動的に割り当てることが できるよう、使用されるバッファの長さを決定する手段を備えているでしょうし、 バイナリアドレスを保持するのには必ず "struct sockaddr" を要求するでしょう。 残念ながら、これは既存のやり方と互換性がありません。 この制限のため、任意のアドレスファミリからネットワークアドレスを 印字するルーチンは、必要な最大バッファ長や、 バイナリアドレスとして使用するアドレスの適切な部分といった 内部的な知識を依然として持っていなければなりません。
ADDR2ASCII (3) | June 13, 1996 |
総合手引 | セクション 3 | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | The “N” in NFS stands for Not, or Need, or perhaps Nightmare | ” |
— Harry Spencer |