Socket.Disconnect(Boolean) メソッド


ソケット接続を閉じ、ソケットを再利用できるようにします。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)



現在の接続の終了後、このソケットが再利用できる場合は 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を呼び出して、送信と受信のアクティビティを停止し、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.

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

最初に Shutdownを呼び出さずに Disconnect を呼び出す必要がある場合は、DontLingerSocket オプションを false に設定し、ゼロ以外のタイムアウト間隔を指定して、送信用のキューに格納されたデータが送信されるようにすることができます。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. DontLingerfalse に設定し、タイムアウト間隔をゼロに指定した場合、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.