Поделиться через


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.

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

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