getsockname 関数 (winsock.h)
getsockname 関数は、ソケットのローカル名を取得します。
構文
int getsockname(
[in] SOCKET s,
[out] sockaddr *name,
[in, out] int *namelen
);
パラメーター
[in] s
ソケットを識別する記述子。
[out] name
ソケットのアドレス (名前) を受け取る SOCKADDR 構造体へのポインター。
[in, out] namelen
名前バッファーのサイズ (バイト単位)。
戻り値
エラーが発生しない場合、 getsockname は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。
エラー コード | 意味 |
---|---|
この API を使用する前に 、WSAStartup 呼び出しが正常に行われる必要があります。 | |
ネットワーク サブシステムが失敗しました。 | |
name パラメーターまたは namelen パラメーターがユーザー アドレス空間の有効な部分ではないか、namelen パラメーターが小さすぎます。 | |
ブロックしている Windows ソケット 1.1 呼び出しが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。 | |
記述子はソケットではありません。 | |
ソケットが bind を使用してアドレスにバインドされていないか、 バインドでADDR_ANY が指定されていますが、接続はまだ発生していません。 |
注釈
getsockname 関数は、指定されたソケット記述子の現在の名前を name で取得します。 これは 、 パラメーターで 指定されたバインドされたソケットまたは接続されたソケットで使用されます。 ローカルの関連付けが返されます。 この呼び出しは、最初にバインドを行わずに接続呼び出しが行われた場合に特に便利です。getsockname 関数は、システムによって設定されたローカル関連付けを決定する唯一の方法を提供します。
呼び出し時に、 namelen パラメーターには 名前 バッファーのサイズ (バイト単位) が含まれます。 返された namelen パラメーターには、 name パラメーターの実際のサイズ (バイト単位) が含まれます。
ソケットが接続または受け入れで接続されていない限り、ソケットが指定されていないアドレスにバインドされている場合、必ずしも getsockname 関数はホスト アドレスに関する情報を返すとは限りません (たとえば、ADDR_ANYを使用)。 Windows ソケット アプリケーションでは、ソケットが接続されていない限り、アドレスが指定されると想定しないでください。 マルチホーム ホストで使用するときにソケットが接続されていない限り、ソケットに使用されるアドレスは不明です。 ソケットがコネクションレス プロトコルを使用している場合、ソケットで I/O が発生するまでアドレスを使用できない可能性があります。
Windows Phone 8: この関数は、Windows Phone 8 以降のWindows Phone ストア アプリでサポートされています。
Windows 8.1とWindows Server 2012 R2: この関数は、Windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでサポートされています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1、 Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winsock.h (Winsock2.h を含む) |
Library | Ws2_32.lib |
[DLL] | Ws2_32.dll |