inet_pton関数 (ws2tcpip.h)
InetPton 関数は、標準テキスト プレゼンテーション フォームの IPv4 または IPv6 インターネット ネットワーク アドレスを数値バイナリ形式に変換します。 この関数の ANSI バージョンは inet_pton。
構文
INT WSAAPI inet_pton(
[in] INT Family,
[in] PCSTR pszAddrString,
[out] PVOID pAddrBuf
);
パラメーター
[in] Family
アドレス ファミリ。
アドレス ファミリに使用できる値は、 Ws2def.h ヘッダー ファイルで定義されます。 Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。 AF_ アドレス ファミリ定数とPF_ プロトコル ファミリ定数の値は同一であるため ( たとえば、AF_INET と PF_INET)、どちらの定数も使用できます。
現在サポートされている値は 、AF_INET と AF_INET6です。
値 | 意味 |
---|---|
|
インターネット プロトコル バージョン 4 (IPv4) アドレス ファミリ。 このパラメーターを指定する場合、 pszAddrString パラメーターは IPv4 アドレスのテキスト表現を指す必要があり、 pAddrBuf パラメーターは IPv4 アドレスを表す IN_ADDR 構造体へのポインターを返します。 |
|
インターネット プロトコル バージョン 6 (IPv6) アドレス ファミリ。 このパラメーターを指定する場合、 pszAddrString パラメーターは IPv6 アドレスのテキスト表現を指す必要があり、 pAddrBuf パラメーターは IPv6 アドレスを表す IN6_ADDR 構造体へのポインターを返します。 |
[in] pszAddrString
数値バイナリ形式に変換する IP アドレスのテキスト表現を含む NULL で終わる文字列へのポインター。
Family パラメーターがAF_INETの場合、pszAddrString パラメーターは、標準のドット 10 進数表記で IPv4 アドレスのテキスト表現を指す必要があります。
Family パラメーターがAF_INET6されている場合、pszAddrString パラメーターは、標準表記で IPv6 アドレスのテキスト表現を指す必要があります。
[out] pAddrBuf
IP アドレスの数値バイナリ表現を格納するバッファーへのポインター。 IP アドレスは、ネットワークのバイト順で返されます。
Family パラメーターがAF_INETされている場合、このバッファーは、IN_ADDR構造体を保持するのに十分な大きさにする必要があります。
Family パラメーターがAF_INET6されている場合、このバッファーは、IN6_ADDR構造体を保持するのに十分な大きさにする必要があります。
戻り値
エラーが発生しない場合、 InetPton 関数は値 1 を返し、 pAddrBuf パラメーターが指すバッファーには、ネットワーク のバイト順のバイナリ数値 IP アドレスが含まれます。
pAddrBuf パラメーターが有効な IPv4 ドット 10 進文字列または有効な IPv6 アドレス文字列ではない文字列を指している場合、InetPton 関数は値 0 を返します。 それ以外の場合は、-1 の値が返され、 を呼び出すことによって特定のエラー コードを取得できます。
拡張エラー情報の WSAGetLastError。
関数にエラーがある場合、 WSAGetLastError によって返される拡張エラー コードには、次のいずれかの値を指定できます。
エラー コード | 意味 |
---|---|
Family パラメーターで指定されたアドレス ファミリ はサポートされていません。 このエラーは、指定された Family パラメーターが AF_INETまたはAF_INET6 されていない場合 に返されます。 | |
pszAddrString パラメーターまたは pAddrBuf パラメーターが NULL であるか、ユーザー アドレス空間の一部ではありません。 |
注釈
InetPton 関数は、Windows Vista 以降でサポートされています。
InetPton 関数は、インターネット ネットワーク アドレスを標準テキスト 表示形式で数値バイナリ形式にプロトコルに依存しない変換を提供します。 InetPton 関数は、pszAddrString パラメーターが指すインターネット アドレスのテキスト表現を受け取り、pAddrBuf パラメーター内の数値バイナリ IP アドレスへのポインターを返します。 inet_addr関数は IPv4 アドレス文字列でのみ機能しますが、InetPton 関数は IPv4 アドレス文字列または IPv6 アドレス文字列で動作します。
この関数の ANSI バージョンは、RFC 2553 で定義されている inet_pton 。 詳細については、 IETF Web サイトで利用可能な RFC 2553 を参照してください。
InetPton 関数では、IP アドレスを表すテキスト文字列を数値バイナリ IP アドレスに変換するために Windows ソケット DLL を読み込む必要はありません。
指定した Family パラメーターが AF_INETの場合、 pszAddrString パラメーターは、ドット付き 10 進数表記で IPv4 アドレスのテキスト文字列を指す必要があります。たとえば、ドット 10 進数表記の IPv4 アドレスの例である "192.168.16.0" のようになります。
指定された Family パラメーターが AF_INET6場合、 pszAddrString パラメーターはインターネット標準形式の IPv6 アドレスのテキスト文字列を指す必要があります。 基本的な文字列表現は、コロンで区切られた 8 つの 16 進数で構成されます。 連続する 0 個の数値の文字列は、二重コロンに置き換えることができます。 IPv6 アドレスの文字列表現には、1 つのダブルコロンしか使用できません。 アドレスが IPv4 互換アドレスの場合、最後の 32 ビットは IPv4 スタイルのドットオクテット表記で表すことができます。
UNICODE または_UNICODEが定義されている場合、 InetPton は、この関数の Unicode バージョンである InetPtonW に定義されます。 pszAddrString パラメーターは、PCWSTR データ型に定義されます。
UNICODE または_UNICODEが定義されていない場合、 InetPton は、この関数の ANSI バージョンである InetPtonA に定義されます。 この関数の ANSI バージョンは、常にinet_ptonとして定義されます。 pszAddrString パラメーターは、PCSTR データ型に定義されます。
IN_ADDR構造体は、Inaddr.h ヘッダー ファイルで定義されています。
IN6_ADDR構造体は、In6addr.h ヘッダー ファイルで定義されています。
Windows Vista 以降では、 RtlIpv4StringToAddress 関数と RtlIpv4StringToAddressEx 関数を使用して、インターネット標準のドット 10 進数表記の IPv4 アドレスのテキスト表現を 、IN_ADDR 構造として表される数値バイナリ アドレスに変換できます。 Windows Vista 以降では、 RtlIpv6StringToAddress 関数と RtlIpv6StringToAddressEx 関数を使用して、IPv6 アドレスの文字列表現を 、IN6_ADDR 構造として表される数値バイナリ IPv6 アドレスに変換できます。 RtlIpv6StringToAddressEx 関数は、標準表記でスコープ ID とポートを含めることができる IPv6 アドレスの文字列表現を数値バイナリ形式に変換するため、より柔軟です。
Windows 8.1とWindows Server 2012 R2: InetPtonW 関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1、Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | ws2tcpip.h |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |