Udostępnij za pośrednictwem


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.

Została zamknięta Socket .

Przykłady

Poniższy przykład kodu używa polecenia Shutdown w celu wyłączenia polecenia 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 używania metody zorientowanej na Socketpołączenie należy zawsze wywołać metodę Shutdown przed zamknięciem Socketelementu . Gwarantuje to, że wszystkie dane są wysyłane i odbierane na podłą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ć Socket elementu 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 w tym Socketobiekcie .
Oba Wyłącz wysyłanie i odbieranie w tym Socketobiekcie .

Ustawienie na howSend wartość określa, że kolejne wywołania są Send niedozwolone. Jeśli używasz połączenia bez Socketpołączenia, określenie Send nie będzie miało wpływu.

Ustawienie na howReceive wartość określa, że kolejne wywołania są Receive niedozwolone. 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 jeden 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 nie ma dostępnego miejsca buforowego dla dodatkowych przychodzących datagramów, zostaną one odrzucone i żaden błąd nie zostanie zwrócony do nadawcy. Korzystanie z Shutdown funkcji bez Socket połączenia nie jest zalecane.

Ustawienie powoduje howBoth wyłączenie zarówno wysyłania, jak i odbierania 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 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.

Dotyczy

Zobacz też