Ler em inglês

Partilhar via


Socket.IOControl Método

Definição

Define os modos de operação de nível baixo para o Socket.

Sobrecargas

IOControl(Int32, Byte[], Byte[])

Define os modos de operação de nível inferior do Socket usando códigos de controle numéricos.

IOControl(IOControlCode, Byte[], Byte[])

Define modos de operação de nível inferior do Socket usando a enumeração IOControlCode para especificar códigos de controle.

IOControl(Int32, Byte[], Byte[])

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

Define os modos de operação de nível inferior do Socket usando códigos de controle numéricos.

C#
public int IOControl(int ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
C#
public int IOControl(int ioControlCode, byte[] optionInValue, byte[] optionOutValue);

Parâmetros

ioControlCode
Int32

Um valor Int32 que especifica o código de controle da operação a ser executado.

optionInValue
Byte[]

Uma matriz Byte que contém os dados de entrada necessários para a operação.

optionOutValue
Byte[]

Uma matriz Byte que contém os dados de saída retornados para a operação.

Retornos

O número de bytes no parâmetro optionOutValue.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Foi feita uma tentativa de alterar o modo de bloqueio sem usar a propriedade Blocking.

Um chamador na pilha de chamadas não tem as permissões necessárias.

Exemplos

O exemplo de código a seguir compara os resultados de FIONREAD e da propriedade Available.

C#
 // FIONREAD is also available as the "Available" property.
public const int FIONREAD   = 0x4004667F;

static void DisplayPendingByteCount(Socket s)
 {
     byte[] outValue = BitConverter.GetBytes(0);

     // Check how many bytes have been received.
     s.IOControl(FIONREAD, null, outValue);

     uint bytesAvailable = BitConverter.ToUInt32(outValue, 0);
     Console.WriteLine("server has {0} bytes pending. Available property says {1}.",
         bytesAvailable, s.Available);

     return;
 }

Comentários

O IOControl método fornece acesso de baixo nível ao sistema Socket operacional subjacente à instância atual da Socket classe . Para obter mais informações, consulte a documentação do WSAIoctl .

Nota

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.

Nota

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

.NET 10 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

IOControl(IOControlCode, Byte[], Byte[])

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

Define modos de operação de nível inferior do Socket usando a enumeração IOControlCode para especificar códigos de controle.

C#
public int IOControl(System.Net.Sockets.IOControlCode ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
C#
public int IOControl(System.Net.Sockets.IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue);

Parâmetros

ioControlCode
IOControlCode

Um valor IOControlCode que especifica o código de controle da operação a ser executada.

optionInValue
Byte[]

Uma matriz do tipo Byte que contém os dados de entrada necessários para a operação.

optionOutValue
Byte[]

Uma matriz do tipo Byte que contém os dados de saída retornados pela operação.

Retornos

O número de bytes no parâmetro optionOutValue.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Foi feita uma tentativa de alterar o modo de bloqueio sem usar a propriedade Blocking.

Exemplos

O exemplo de código a seguir compara os resultados da chamada IOControl com DataToRead e a Available propriedade .

C#
static void DisplayPendingByteCount(Socket s)
{
    byte[] outValue = BitConverter.GetBytes(0);

    // Check how many bytes have been received.
    s.IOControl(IOControlCode.DataToRead, null, outValue);

    uint bytesAvailable = BitConverter.ToUInt32(outValue, 0);
    Console.Write("server has {0} bytes pending. ",
        bytesAvailable);
    Console.WriteLine("Available property says {1}.",
                     s.Available);

    return;
}

Comentários

Esse método fornece acesso de baixo nível ao sistema Socket operacional subjacente à instância atual da Socket classe . Para obter mais informações, consulte a documentação do WSAIoctl .

Nota

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.

Nota

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

.NET 10 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1