Socket.Shutdown(SocketShutdown) Metoda

Definicja

Wyłącza wysyłanie i odbieranie w obiekcie 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)

Parametry

how
SocketShutdown

SocketShutdown Jedna z wartości określających operację, która nie będzie już dozwolona.

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Przykłady

W poniższym przykładzie kodu użyto Shutdown polecenia , aby wyłączyć element 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

Uwagi

W przypadku korzystania z metody zorientowanej na Socketpołączenie zawsze wywołaj metodę Shutdown przed zamknięciem Socketmetody . Gwarantuje to, że wszystkie dane zostaną wysłane i odebrane na połączonym gniazdie przed jego zamknięciem.

Wywołaj metodę , Close aby zwolnić wszystkie zarządzane i niezarządzane zasoby skojarzone z programem Socket. Nie należy próbować ponownie używać elementu Socket po zamknięciu.

W poniższej SocketShutdown tabeli przedstawiono wartości wyliczenia, które są prawidłowe dla parametru how .

Wartość Opis
Wysyłanie Wyłącz wysyłanie w tym Socketobiekcie .
Odbieranie Wyłącz odbieranie dla tego Socketelementu .
Oba Wyłącz wysyłanie i odbieranie w tym Socketobiekcie .

Ustawienie how określa Send , że kolejne wywołania do Send nie są dozwolone. Jeśli używasz bez połączenia Socket, określenie Send nie będzie miało żadnego efektu.

Ustawienie how określa Receive , że kolejne wywołania do Receive nie są dozwolone. Nie ma to wpływu na niższe warstwy protokołu. Jeśli używasz protokołu zorientowanego na połączenie, połączenie zostanie przerwane, jeśli którykolwiek z następujących warunków istnieje po wywołaniu metody Shutdown :

  • Dane są w buforze sieci przychodzącej oczekujące na odebranie.

  • Przybyło więcej danych.

Jeśli używasz protokołu bez połączenia, datagramy są akceptowane i kolejkowane. Jeśli jednak dla dodatkowych przychodzących datagramów nie jest dostępne żadne miejsce w buforze, zostaną one odrzucone i żaden błąd nie zostanie zwrócony do nadawcy. Używanie w Shutdown przypadku bez połączenia Socket nie jest zalecane.

Ustawienie how wyłącza Both zarówno wysyłanie, jak i odbieranie zgodnie z powyższym opisem.

Uwaga

Jeśli podczas wywoływania Shutdown metody wystąpi błądSocketException, 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 Windows Sockets 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.

Dotyczy

Zobacz też