Compartilhar via


Socket.Shutdown(SocketShutdown) Método

Definição

Desabilita envios e recebimentos em um 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)

Parâmetros

how
SocketShutdown

Um dos valores SocketShutdown que especifica a operação que não será mais permitida.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Exemplos

O exemplo de código a seguir usa para desabilitar Shutdown o 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

Comentários

Ao usar um orientado a Socketconexão, sempre chame o Shutdown método antes de fechar o Socket. Isso garante que todos os dados sejam enviados e recebidos no soquete conectado antes de serem fechados.

Chame o Close método para liberar todos os recursos gerenciados e não gerenciados associados ao Socket. Não tente reutilizar o após o Socket fechamento.

A tabela a seguir mostra os SocketShutdown valores de enumeração válidos para o how parâmetro .

Valor Descrição
Enviar Desabilite o envio neste Socket.
Receber Desabilite o recebimento neste Socket.
Ambos Desabilite o envio e o recebimento neste Socket.

Definir how como Send especifica que chamadas subsequentes para Send não são permitidas. Se você estiver usando um sem Socketconexão, especificar Send não terá efeito.

Definir how como Receive especifica que chamadas subsequentes para Receive não são permitidas. Isso não tem efeito em camadas de protocolo inferiores. Se você estiver usando um protocolo orientado a conexão, a conexão será encerrada se uma das seguintes condições existir após uma chamada para Shutdown :

  • Os dados estão no buffer de rede de entrada aguardando para serem recebidos.

  • Mais dados chegaram.

Se você estiver usando um protocolo sem conexão, os datagramas serão aceitos e enfileirados. No entanto, se nenhum espaço de buffer estiver disponível para datagramas de entrada adicionais, eles serão descartados e nenhum erro será retornado ao remetente. Não é recomendável usar Shutdown em um sem Socket conexão.

A configuração how para Both desabilita os envios e os recebimentos, conforme descrito acima.

Observação

Se você receber um SocketException ao chamar o Shutdown método , use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Aplica-se a

Confira também