LPWSPLISTEN コールバック関数 (ws2spi.h)

LPWSPListen 関数は、受信接続をリッスンするソケットを確立します。

構文

LPWSPLISTEN Lpwsplisten;

int Lpwsplisten(
  [in]  SOCKET s,
  [in]  int backlog,
  [out] LPINT lpErrno
)
{...}

パラメーター

[in] s

バインドされた接続されていないソケットを識別する記述子。

[in] backlog

保留中の接続のキューが拡張できる最大長。 この値が SOMAXCONN の場合、サービス プロバイダーはバックログを最大の "妥当な" 値に設定する必要があります。 実際のバックログ値を調べる標準のプロビジョニングはありません。

[out] lpErrno

エラー コードへのポインター。

戻り値

エラーが発生しない場合、 LPWSPListen は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 lpErrno で特定のエラー コードを使用できます。

エラー コード 意味
WSAENETDOWN
ネットワーク サブシステムが失敗しました。
WSAEADDRINUSE
ソケットのローカル アドレスは既に使用されており、SO_REUSEADDRでアドレスを再利用できるようにソケットがマークされていません。 このエラーは通常、 Bind の時点で発生しますが、**bind** が部分的なワイルドカード アドレス (ADDR_ANYを含む) に対する場合、およびこの関数の時点で特定のアドレスをコミットする必要がある場合は、この関数まで遅延する可能性があります。
WSAEINPROGRESS
コールバックが進行中の場合、関数が呼び出されます。
WSAEINVAL
ソケットが LPWSPBind とバインドされていません。
WSAEISCONN
ソケットは既に接続されています。
WSAEMFILE
これ以上使用できるソケット記述子がありません。
WSAENOBUFS
バッファーに空き領域がありません。
WSAENOTSOCK
記述子はソケットではありません。
WSAEOPNOTSUPP
参照されるソケットは、 LPWSPListen 操作をサポートする型ではありません。

注釈

接続を受け入れるために、LPWSPBind を使用してローカル アドレスにバインドされた LPWSPSocket を使用してソケットを作成し、受信接続のバックログを LPWSPListen で指定してから、LPWSPAccept で接続を受け入れます。 LPWSPListen は、接続指向のソケット (たとえば、SOCK_STREAM) にのみ適用されます。 ソケット s はパッシブ モードになり、受信接続要求は Windows ソケット SPI クライアントによって受信確認され、キューに入れられます。

この関数は通常、一度に複数の接続要求を持つ可能性があるサーバーで使用されます。接続要求がキューがいっぱいになると、クライアントは WSAECONNREFUSED を示すエラーを受け取ります。

LPWSPListen は、使用可能な記述子がない場合でも、引き続き合理的に機能する必要があります。 キューが空になるまで、接続を受け入れる必要があります。 記述子が使用可能になった場合、 LPWSPListen または LPWSPAccept を後で呼び出すと、キューが現在または最新のバックログ (可能な場合) に補充され、着信接続のリッスンが再開されます。

Windows ソケット SPI クライアントは、同じソケットで LPWSPListen を複数回呼び出すことができます。 これは、リッスンしているソケットの現在のバックログを更新する効果があります。 新しい バックログ 値よりも保留中の接続数が多い場合は、過剰な保留中の接続がリセットされて削除されます。

backlog パラメーターは、サービス プロバイダーによって決定される妥当な値に (サイレントモードで) 制限されます。 無効な値は、最も近い有効な値に置き換えられます。 実際のバックログ値を調べる標準のプロビジョニングはありません。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header ws2spi.h

こちらもご覧ください

LPWSPAccept

LPWSPConnect

LPWSPSocket