Socket.IOControl Método
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define os modos de operação de nível baixo para o Socket.
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. |
- 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.
public:
int IOControl(int ioControlCode, cli::array <System::Byte> ^ optionInValue, cli::array <System::Byte> ^ optionOutValue);
public int IOControl(int ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
public int IOControl(int ioControlCode, byte[] optionInValue, byte[] optionOutValue);
member this.IOControl : int * byte[] * byte[] -> int
Public Function IOControl (ioControlCode As Integer, optionInValue As Byte(), optionOutValue As Byte()) As Integer
Parâmetros
Retornos
O número de bytes no parâmetro optionOutValue
.
Exceções
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
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.
// FIONREAD is also available as the "Available" property.
const int FIONREAD = 0x4004667F;
void DisplayPendingByteCount( Socket^ s )
{
array<Byte>^ outValue = BitConverter::GetBytes( 0 );
// Check how many bytes have been received.
s->IOControl( FIONREAD, nullptr, outValue );
UInt32 bytesAvailable = BitConverter::ToUInt32( outValue, 0 );
Console::WriteLine( "server has {0} bytes pending. Available property says {1}.",
bytesAvailable, s->Available );
return;
}
// 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 |
- 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.
public:
int IOControl(System::Net::Sockets::IOControlCode ioControlCode, cli::array <System::Byte> ^ optionInValue, cli::array <System::Byte> ^ optionOutValue);
public int IOControl(System.Net.Sockets.IOControlCode ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
public int IOControl(System.Net.Sockets.IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue);
member this.IOControl : System.Net.Sockets.IOControlCode * byte[] * byte[] -> int
Public Function IOControl (ioControlCode As IOControlCode, optionInValue As Byte(), optionOutValue As Byte()) As Integer
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.
O Socket foi fechado.
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 .
void DisplayPendingByteCount( Socket^ s )
{
array<Byte>^ outValue = BitConverter::GetBytes( 0 );
// Check how many bytes have been received.
s->IOControl( IOControlCode::DataToRead, nullptr, outValue );
UInt32 bytesAvailable = BitConverter::ToUInt32( outValue, 0 );
Console::Write( "server has {0} bytes pending,",
bytesAvailable );
Console::WriteLine( "Available property says {1}.",
s->Available );
return;
}
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 |
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: