Win32 API 日本語リファレンス
ホーム › Networking.WinSock › LPWSPGETSOCKNAME

LPWSPGETSOCKNAME

コールバック

シグネチャ

INT LPWSPGETSOCKNAME(
    SOCKET s,
    SOCKADDR* name,
    INT* namelen,
    INT* lpErrno
);

パラメーター

フィールド型説明
sSOCKETバインドされたソケットを識別する記述子。
nameSOCKADDR*ソケットのアドレス (名前) を格納するために使用する sockaddr 構造体へのポインター。
namelenINT*入力時は、name が指す構造体のサイズ (バイト単位) を示す整数へのポインター。出力時は、返された名前のサイズ (バイト単位) を示します。
lpErrnoINT*エラーコードへのポインター。

公式ドキュメント

LPWSPGetSockName 関数は、ソケットのローカル名を取得します。

戻り値

エラーが発生しなかった場合、LPWSPGetSockName は 0 を返します。それ以外の場合は SOCKET_ERROR が返され、具体的なエラーコードは lpErrno で取得できます。

エラーコード 意味
WSAENETDOWN
ネットワークサブシステムに障害が発生しました。
WSAEFAULT
name または namelen パラメーターがユーザーアドレス空間の有効な部分ではないか、namelen パラメーターが小さすぎます。
WSAEINPROGRESS
コールバックの実行中に関数が呼び出されました。
WSAENOTSOCK
記述子がソケットではありません。
WSAEINVAL
ソケットが LPWSPBind でアドレスにバインドされていないか、**LPWSPBind** で ADDR_ANY が指定されているものの接続がまだ行われていません。

解説(Remarks)

LPWSPGetSockName は、指定されたソケット記述子の現在の名前を name に取得します。s パラメーターで指定された、バインド済みまたは接続済み (あるいはその両方) のソケットに対して使用します。ローカルの関連付けが返されます。この呼び出しは、LPWSPBind を先に行わずに LPWSPConnect を呼び出した場合に特に有用です。サービスプロバイダーが設定したローカルの関連付けを判別できる唯一の手段が、この呼び出しだからです。

ソケットが未指定のアドレス (たとえば ADDR_ANY) にバインドされ、指定されたアドレスファミリー内のホストのいずれのアドレスもそのソケットに使用できることを示している場合、そのソケットが LPWSPConnect または LPWSPAccept で接続されていない限り、LPWSPGetSockName がホストアドレスに関する情報を返すとは限りません。Windows Sockets SPI クライアントは、ソケットが接続されていない限り、アドレスが指定されるものと想定してはなりません。これは、マルチホームホストではソケットに使用されるアドレスが接続されるまで不明であるためです。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)