Socket.Disconnect(Boolean) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zamyka połączenie gniazda i umożliwia ponowne użycie gniazda.
public:
void Disconnect(bool reuseSocket);
public void Disconnect(bool reuseSocket);
member this.Disconnect : bool -> unit
Public Sub Disconnect (reuseSocket As Boolean)
Parametry
- reuseSocket
- Boolean
true jeśli to gniazdo można ponownie użyć po zamknięciu bieżącego połączenia; w przeciwnym razie , false.
Wyjątki
Socket Obiekt został zamknięty.
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Przykłady
Poniższy przykład kodu tworzy gniazdo do komunikacji synchronicznej i wysyła dane do hosta zdalnego. Następnie wywołuje metodę Shutdown, aby zatrzymać działanie wysyłania i odbierania oraz Disconnect, aby zamknąć połączenie gniazda.
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");
Uwagi
Jeśli używasz protokołu zorientowanego na połączenie, możesz użyć tej metody, aby zamknąć gniazdo. Ta metoda kończy połączenie i ustawia Connected właściwość na false. Jeśli jednak jest to true, reuseSocket możesz ponownie użyć gniazda.
Aby upewnić się, że wszystkie dane są wysyłane i odbierane przed zamknięciem gniazda, należy wywołać metodę Disconnect przed wywołaniem Shutdown metody .
Jeśli musisz wywołać połączenie bez pierwszego wywołania DisconnectShutdown, możesz ustawić DontLingerSocket opcję false na wartość i określić interwał limitu czasu bezzerowego, aby upewnić się, że dane w kolejce do transmisji wychodzącej są wysyłane.
Disconnect następnie blokuje do momentu wysłania danych lub do momentu wygaśnięcia określonego limitu czasu. Jeśli ustawisz DontLingerfalse wartość i określisz zerowy interwał limitu czasu, Close zwalnia połączenie i automatycznie odrzuca wychodzące dane w kolejce.
Uwaga
Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API gniazda systemu Windows w wersji 2 , aby uzyskać szczegółowy opis błędu.
Uwaga
Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.