Socket.Disconnect(Boolean) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Ferme la connexion de socket et autorise la réutilisation du socket.
public:
void Disconnect(bool reuseSocket);
public void Disconnect (bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)
Paramètres
- reuseSocket
- Boolean
true
si ce socket peut être réutilisé après la fermeture de la connexion active ; sinon, false
.
Exceptions
L’objet Socket a été fermé.
Une erreur s’est produite pendant la tentative d’accès au socket.
Exemples
L’exemple de code suivant crée un socket pour la communication synchrone et envoie des données à un hôte distant. Il appelle Shutdownensuite , pour arrêter l’activité d’envoi et de réception, et Disconnect, pour fermer la connexion de socket.
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" );
else
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.
client.Connect(ipEndPoint);
// 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.
client.Shutdown(SocketShutdown.Both);
client.Disconnect(true);
if (client.Connected)
Console.WriteLine("We're still connnected");
else
Console.WriteLine("We're disconnected");
Remarques
Si vous utilisez un protocole orienté connexion, vous pouvez utiliser cette méthode pour fermer le socket. Cette méthode met fin à la connexion et définit la propriété sur Connectedfalse
. Toutefois, si reuseSocket
a la valeur true
, vous pouvez réutiliser le socket.
Pour vous assurer que toutes les données sont envoyées et reçues avant la fermeture du socket, vous devez appeler Shutdown avant d’appeler la Disconnect méthode .
Si vous devez appeler Disconnect sans appeler Shutdownd’abord , vous pouvez définir l’option sur false
et spécifier un intervalle de délai d’attente différent de zéro pour vous assurer que les données mises en file d’attente pour la DontLingerSocket transmission sortante sont envoyées.
Disconnect bloque ensuite jusqu’à ce que les données soient envoyées ou jusqu’à l’expiration du délai d’attente spécifié. Si vous définissez DontLingerfalse
sur et spécifiez un intervalle de délai d’attente zéro, Close libère la connexion et ignore automatiquement les données en file d’attente sortantes.
Notes
Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.
Notes
Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.