Compartilhar via


Socket.GetSocketOption Método

Definição

Retorna o valor de uma opção Socket.

Sobrecargas

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Retorna a opção da configuração Socket especificada, representada como uma matriz de bytes.

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Retorna o valor da opção Socket especificada em uma matriz.

GetSocketOption(SocketOptionLevel, SocketOptionName)

Retorna o valor de uma opção Socket especificada, representada como um objeto.

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Retorna a opção da configuração Socket especificada, representada como uma matriz de bytes.

public:
 void GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, cli::array <System::Byte> ^ optionValue);
public void GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, byte[] optionValue);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * byte[] -> unit
Public Sub GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionValue As Byte())

Parâmetros

optionLevel
SocketOptionLevel

Um dos valores de SocketOptionLevel.

optionName
SocketOptionName

Um dos valores de SocketOptionName.

optionValue
Byte[]

Uma matriz do tipo Byte que receberá a configuração da opção.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

- ou -

Em aplicativos do .NET Compact Framework, o espaço do buffer padrão do Windows CE é definido como 32768 bytes. É possível alterar o espaço do buffer por soquete chamando SetSocketOption.

Exemplos

O exemplo de código a seguir recupera os LingerOption valores de tempo limite e Send e os exibe no console.

Console::Write("This application will timeout if Send does not return within ");
Console::WriteLine(Encoding::ASCII->GetString(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4)));

// Blocks until send returns.
int i = s->Send(msg);

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive(bytes);

// Displays to the screen.
Console::WriteLine(Encoding::ASCII->GetString(bytes));
s->Shutdown(SocketShutdown::Both);
Console::Write("If data remains to be sent, this application will stay open for ");
Console::WriteLine(safe_cast<LingerOption^>(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::Linger))->LingerTime.ToString());
s->Close();
Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send(msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive(bytes);

// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

Comentários

Socket as opções determinam o comportamento do atual Socket. Após a conclusão bem-sucedida desse método, a matriz especificada pelo optionValue parâmetro contém o valor da opção especificada Socket .

Quando o comprimento da optionValue matriz for menor que o número de bytes necessários para armazenar o valor da opção especificada Socket , GetSocketOption gerará um SocketException. Se você receber um SocketException, 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. Use essa sobrecarga para todos os soquetes representados por valores boolianos ou inteiros.

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.

Confira também

Aplica-se a

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Retorna o valor da opção Socket especificada em uma matriz.

public:
 cli::array <System::Byte> ^ GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, int optionLength);
public byte[] GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, int optionLength);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * int -> byte[]
Public Function GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionLength As Integer) As Byte()

Parâmetros

optionLevel
SocketOptionLevel

Um dos valores de SocketOptionLevel.

optionName
SocketOptionName

Um dos valores de SocketOptionName.

optionLength
Int32

O comprimento, em bytes, do valor retornado esperado.

Retornos

Byte[]

Uma matriz do tipo Byte que contém o valor da opção de soquete.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

- ou -

Em aplicativos do .NET Compact Framework, o espaço do buffer padrão do Windows CE é definido como 32768 bytes. É possível alterar o espaço do buffer por soquete chamando SetSocketOption.

Exemplos

O exemplo de código a seguir recupera os LingerOption valores de tempo limite e Send e os exibe no console.

Console::Write("This application will timeout if Send does not return within ");
Console::WriteLine(Encoding::ASCII->GetString(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4)));

// Blocks until send returns.
int i = s->Send(msg);

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive(bytes);

// Displays to the screen.
Console::WriteLine(Encoding::ASCII->GetString(bytes));
s->Shutdown(SocketShutdown::Both);
Console::Write("If data remains to be sent, this application will stay open for ");
Console::WriteLine(safe_cast<LingerOption^>(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::Linger))->LingerTime.ToString());
s->Close();
Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send(msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive(bytes);

// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

Comentários

O optionLength parâmetro define o tamanho máximo da matriz de bytes retornada. Se o valor da opção exigir menos bytes, a matriz conterá apenas tantos bytes. Se o valor da opção exigir mais bytes, GetSocketOption gerará um SocketException. Use essa sobrecarga para todos os soquetes representados por valores boolianos ou inteiros.

Observação

Se você receber um SocketException, 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.

Confira também

Aplica-se a

GetSocketOption(SocketOptionLevel, SocketOptionName)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Retorna o valor de uma opção Socket especificada, representada como um objeto.

public:
 System::Object ^ GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName);
public object? GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName);
public object GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName -> obj
Public Function GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName) As Object

Parâmetros

optionLevel
SocketOptionLevel

Um dos valores de SocketOptionLevel.

optionName
SocketOptionName

Um dos valores de SocketOptionName.

Retornos

Um objeto que representa o valor da opção. Quando o parâmetro optionName for definido como Linger, o valor retornado é uma instância da classe LingerOption. Quando optionName for definido como AddMembership ou DropMembership, o valor retornado é uma instância da classe MulticastOption. Quando optionName for qualquer outro valor, o valor retornado é um inteiro.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

- ou -

optionName foi definido para o valor sem suporte MaxConnections.

Exemplos

O exemplo de código a seguir recupera os LingerOption valores de tempo limite e Send e os exibe no console.

Console::Write("This application will timeout if Send does not return within ");
Console::WriteLine(Encoding::ASCII->GetString(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4)));

// Blocks until send returns.
int i = s->Send(msg);

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive(bytes);

// Displays to the screen.
Console::WriteLine(Encoding::ASCII->GetString(bytes));
s->Shutdown(SocketShutdown::Both);
Console::Write("If data remains to be sent, this application will stay open for ");
Console::WriteLine(safe_cast<LingerOption^>(s->GetSocketOption(SocketOptionLevel::Socket, SocketOptionName::Linger))->LingerTime.ToString());
s->Close();
Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send(msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive(bytes);

// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

Comentários

Socket as opções determinam o comportamento do atual Socket. Use essa sobrecarga para obter as Lingeropções , AddMembershipe DropMembershipSocket . Para a opção Linger , use Socket para o optionLevel parâmetro . Para AddMembership e DropMembership, use IP. Se você quiser definir o valor de qualquer uma das opções listadas acima, use o SetSocketOption método .

Observação

Se você receber um SocketException, 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.

Confira também

Aplica-se a