WSASendDisconnect 関数 (winsock2.h)

WSASendDisconnect 関数は、ソケットの接続の終了を開始し、切断データを送信します。

構文

int WSAAPI WSASendDisconnect(
  [in] SOCKET   s,
  [in] LPWSABUF lpOutboundDisconnectData
);

パラメーター

[in] s

ソケットを識別する記述子。

[in] lpOutboundDisconnectData

送信切断データへのポインター。

戻り値

エラーが発生しない場合、 WSASendDisconnect は 0 を返します。 それ以外の場合は、SOCKET_ERRORの値が返され、 WSAGetLastError を呼び出すことによって特定のエラー コードを取得できます。

エラー コード 意味
WSANOTINITIALIZED
この関数を使用する前に 、WSAStartup 呼び出しが正常に行われる必要があります。
WSAENETDOWN
ネットワーク サブシステムが失敗しました。
WSAENOPROTOOPT
パラメーター lpOutboundDisconnectDataNULL ではなく、切断データはサービス プロバイダーでサポートされていません。
WSAEINPROGRESS
ブロックしている Windows ソケット 1.1 呼び出しが進行中であるか、サービス プロバイダーがコールバック関数を処理しています。
WSAENOTCONN
ソケットが接続されていません (接続指向ソケットのみ)。
WSAENOTSOCK
記述子はソケットではありません。
WSAEFAULT
lpOutboundDisconnectData パラメーターは、ユーザー アドレス空間の有効な部分に完全には含まれていません。

注釈

WSASendDisconnect 関数は、接続指向ソケットで使用され、伝送を無効にし、接続の終了と切断データの転送 (ある場合) を開始します。 これはシャットダウン (SD_SEND) と同じですが、 WSASendDisconnect では切断データの送信も許可されます (これをサポートするプロトコル内)。

この関数が正常に発行されると、後続の送信は許可されません。

lpOutboundDisconnectData パラメーターは、NULL でない場合は、WSARecvDisconnect を使用して取得するためにリモート パーティに送信される送信切断データを含むバッファーを指します。

メモ Windows での TCP/IP のネイティブ実装では、切断データはサポートされていません。 切断データは、 WSAPROTOCOL_INFO構造に XP1_DISCONNECT_DATA フラグを持つ Windows ソケット プロバイダーでのみサポートされます。 WSAEnumProtocols 関数を使用して、インストールされているすべてのプロバイダーのWSAPROTOCOL_INFO構造体を取得します。
 
WSASendDisconnect 関数はソケットを閉じず、ソケットに接続されているリソースは closesocket が呼び出されるまで解放されません。

WSASendDisconnect 関数は、ソケットのSO_LINGER設定に関係なくブロックしません。

アプリケーションは、 WSASendDisconnect を呼び出した後にソケットを再利用できることに依存しないようにする必要があります。 特に、Windows ソケット プロバイダーは、このようなソケットでのWSAConnect接続/の使用をサポートする必要はありません。

メモWSASendDisconnect などのブロッキング Winsock 呼び出しを発行する場合、Winsock は呼び出しを完了する前にネットワーク イベントを待機する必要がある場合があります。 Winsock は、この状況でアラート可能な待機を実行します。この待機は、同じスレッドでスケジュールされた非同期プロシージャ 呼び出し (APC) によって中断される可能性があります。 同じスレッドで進行中の Winsock 呼び出しを中断した APC 内で別のブロック Winsock 呼び出しを発行すると、未定義の動作が発生し、Winsock クライアントが試行することはできません。
 

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winsock2.h
Library Ws2_32.lib
[DLL] Ws2_32.dll

こちらもご覧ください

Winsock 関数

Winsock リファレンス

connect

socket