Socket.Shutdown(SocketShutdown) メソッド

定義

Socket での送受信を無効にします。Disables sends and receives on a Socket.

public:
 void Shutdown(System::Net::Sockets::SocketShutdown how);
public void Shutdown (System.Net.Sockets.SocketShutdown how);
member this.Shutdown : System.Net.Sockets.SocketShutdown -> unit
Public Sub Shutdown (how As SocketShutdown)

パラメーター

how
SocketShutdown

許可されなくなる操作を指定する SocketShutdown 値の 1 つ。One of the SocketShutdown values that specifies the operation that will no longer be allowed.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

次のコード例では Shutdown 、を使用してを無効にし Socket ます。The following code example uses Shutdown to disable the Socket.

try
{
   aSocket->Shutdown(SocketShutdown::Both);
   aSocket->Close();
}
catch (...)
{
   aSocket->Close();
   throw;
}

if ( aSocket->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
try
{
    aSocket.Shutdown(SocketShutdown.Both);
}
finally
{
    aSocket.Close();
}
    Try
        aSocket.Shutdown(SocketShutdown.Both)
    Finally
        aSocket.Close()
    End Try

End Sub

注釈

接続指向のを使用する場合は、を Socket 閉じる前に常にメソッドを呼び出し Shutdown Socket ます。When using a connection-oriented Socket, always call the Shutdown method before closing the Socket. これにより、接続されたソケットが閉じられる前に、すべてのデータが送信され、受信されます。This ensures that all data is sent and received on the connected socket before it is closed.

メソッドを呼び出して Close 、に関連付けられているすべてのマネージリソースとアンマネージリソースを解放 Socket します。Call the Close method to free all managed and unmanaged resources associated with the Socket. 終了後にを再利用しないようにしてください SocketDo not attempt to reuse the Socket after closing.

次の表は、 SocketShutdown パラメーターに対して有効な列挙値を示して how います。The following table shows the SocketShutdown enumeration values that are valid for the how parameter.

[値]Value 説明Description
送信Send このでの送信を無効に Socket します。Disable sending on this Socket.
ReceiveReceive このでの受信を無効に Socket します。Disable receiving on this Socket.
両方Both こので送信と受信の両方を無効に Socket します。Disable both sending and receiving on this Socket.

をに設定すると how Send 、後続のへの呼び出し Send は許可されません。Setting how to Send specifies that subsequent calls to Send are not allowed. コネクションレス型を使用している場合、を指定しても効果はあり Socket Send ません。If you are using a connectionless Socket, specifying Send will have no effect.

をに設定すると how Receive 、後続のへの呼び出し Receive は許可されません。Setting how to Receive specifies that subsequent calls to Receive are not allowed. これは、下位のプロトコルレイヤーには影響しません。This has no effect on lower protocol layers. 接続指向プロトコルを使用している場合は、の呼び出しの後に次のいずれかの条件が満たされると、接続が終了し Shutdown ます。If you are using a connection-oriented protocol, the connection is terminated if either of the following conditions exist after a call to Shutdown :

  • 受信を待機している受信ネットワークバッファーにデータがあります。Data is in the incoming network buffer waiting to be received.

  • さらに多くのデータが到着しました。More data has arrived.

コネクションレスプロトコルを使用している場合は、データグラムが受け入れられ、キューに登録されます。If you are using a connectionless protocol, datagrams are accepted and queued. ただし、追加の受信データグラムに使用できるバッファー領域がない場合は、破棄され、送信側にエラーは返されません。However, if no buffer space is available for additional incoming datagrams, they will be discarded and no error will be returned to the sender. Shutdownコネクションレスでを使用する Socket ことは推奨されません。Using Shutdown on a connectionless Socket is not recommended.

howをに設定すると Both 、前述のように、送信と受信の両方が無効になります。Setting how to Both disables both sends and receives as described above.

注意

メソッドの呼び出し時にを受け取った場合は、プロパティを使用して SocketException Shutdown 特定の SocketException.ErrorCode エラーコードを取得します。If you receive a SocketException when calling the Shutdown method, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

適用対象

こちらもご覧ください