Socket.Shutdown(SocketShutdown) Метод

Определение

Блокирует передачу и получение данных для объекта 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)

Параметры

how
SocketShutdown

Одно из значений SocketShutdown, указывающее на то, что операция более не разрешена.

Исключения

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Примеры

В следующем примере кода используется для Shutdown отключения 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

Комментарии

При использовании ориентированного Socketна подключение всегда вызывайте Shutdown метод перед закрытием Socket. Это гарантирует отправку и получение всех данных в подключенном сокете перед закрытием.

Вызовите метод , Close чтобы освободить все управляемые и неуправляемые Socketресурсы, связанные с . Не пытайтесь повторно использовать Socket после закрытия.

В следующей SocketShutdown таблице показаны значения перечисления, допустимые how для параметра .

Значение Описание
Отправить Отключите отправку в этом .Socket
Receive Отключите получение в этом .Socket
Оба Отключите как отправку, так и получение в этом .Socket

Если задано значение how , Send последующие вызовы не Send разрешены. Если вы используете без Socketподключения , указание Send не будет иметь никакого эффекта.

Если задано значение how , Receive последующие вызовы не Receive разрешены. Это не влияет на более низкие уровни протокола. Если вы используете протокол, ориентированный на подключение, подключение прерывается при наличии любого из следующих условий после вызова Shutdown :

  • Данные помещаются во входящий сетевой буфер, ожидающий получения.

  • Поступили дополнительные данные.

Если вы используете протокол без подключения, датаграммы принимаются и помещаются в очередь. Однако если для дополнительных входящих датаграмм нет буферного пространства, они будут удалены, а отправитель не будет возвращена ошибка. Не рекомендуется использовать Shutdown для бессерверных Socket подключений.

Параметр how отключает Both отправку и получение, как описано выше.

Примечание

При получении SocketException при вызове Shutdown метода используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

Применяется к

См. также раздел