Socket.Disconnect(Boolean) Socket.Disconnect(Boolean) Socket.Disconnect(Boolean) Socket.Disconnect(Boolean) Method


ソケット接続を閉じ、ソケットを再利用できるようにします。Closes the socket connection and allows reuse of the socket.

 void Disconnect(bool reuseSocket);
public void Disconnect (bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)


Boolean Boolean Boolean Boolean

現在の接続の終了後、このソケットが再利用できる場合は true。それ以外の場合は falsetrue if this socket can be reused after the current connection is closed; otherwise, false.


このメソッドは、Windows 2000 以前でのみサポートされます。それ以外の場合は、例外がスローされます。This method requires Windows 2000 or earlier, or the exception will be thrown.

Socket オブジェクトは閉じられています。The Socket object has been closed.

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

次のコード例では、同期通信用ソケットを作成し、リモート ホストにデータを送信します。The following code example creates a socket for synchronous communication and sends some data to a remote host. 呼び出してShutdownを送信を停止し、receive アクティビティ、およびDisconnect、ソケット接続を閉じます。It then calls Shutdown, to stop the send and receive activity, and Disconnect, to close the socket connection.

IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );
Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

// Connect the socket to the remote end point.
client->Connect( ipEndPoint );

// Send some data to the remote device.
String^ data = "This is a string of data <EOF>";
array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
int bytesTransferred = client->Send( buffer );

// Write to the console the number of bytes transferred.
Console::WriteLine( "{0} bytes were sent.\n", bytesTransferred );

// Release the socket.
client->Shutdown( SocketShutdown::Both );
client->Disconnect( true );
if ( client->Connected )
      Console::WriteLine( "We're still connnected" );
      Console::WriteLine( "We're disconnected" );
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress  ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

Socket client = new Socket(AddressFamily.InterNetwork,
    SocketType.Stream, ProtocolType.Tcp);

// Connect the socket to the remote end point.

// Send some data to the remote device.
string data = "This is a string of data <EOF>";
byte[] buffer = Encoding.ASCII.GetBytes(data);

int bytesTransferred =  client.Send(buffer);

// Write to the console the number of bytes transferred.
Console.WriteLine("{0} bytes were sent.\n", bytesTransferred);

// Release the socket.

if (client.Connected) 
    Console.WriteLine("We're still connnected");
    Console.WriteLine("We're disconnected");


接続指向プロトコルを使用している場合は、ソケットを閉じるにこのメソッドを使用できます。If you are using a connection-oriented protocol, you can use this method to close the socket. このメソッドが終了接続とセット、Connectedプロパティをfalseします。This method ends the connection and sets the Connected property to false. ただし場合、reuseSockettrueソケットを再利用することができます。However, if reuseSocket is true, you can reuse the socket.

すべてのデータが送信されており、ソケットを閉じる前に受信したことを確実に呼び出す必要があるShutdown呼び出す前に、Disconnectメソッド。To ensure that all data is sent and received before the socket is closed, you should call Shutdown before calling the Disconnect method.

呼び出す必要がある場合Disconnect最初に呼び出さずShutdownを設定することができます、 DontLinger Socketオプションをfalseキュー データを伝送の送信が送信されるを確実に 0 以外のタイムアウト間隔を指定します。If you need to call Disconnect without first calling Shutdown, you can set the DontLingerSocket option to false and specify a nonzero time-out interval to ensure that data queued for outgoing transmission is sent. Disconnect データが送信されるまで、または指定したタイムアウトが経過するまでブロックします。Disconnect then blocks until the data is sent or until the specified time-out expires. 設定した場合DontLingerfalse0 のタイムアウト間隔を指定してCloseの接続を解放し、送信キューに置かれたデータを自動的に破棄します。If you set DontLinger to false and specify a zero time-out interval, Close releases the connection and automatically discards outgoing queued data.


表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, 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.