Socket.IOControl Metoda

Definicja

Ustawia tryby operacyjne niskiego poziomu dla parametru Socket.

Przeciążenia

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

Ustawia tryby operacyjne niskiego poziomu dla używania Socket numerycznych kodów sterujących.

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

Ustawia tryby operacyjne niskiego poziomu dla Socket przy użyciu IOControlCode wyliczenia w celu określenia kodów kontrolnych.

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

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Ustawia tryby operacyjne niskiego poziomu dla używania Socket numerycznych kodów sterujących.

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

Parametry

ioControlCode
Int32

Int32 Wartość określająca kod kontrolny operacji do wykonania.

optionInValue
Byte[]

Tablica zawierająca Byte dane wejściowe wymagane przez operację.

optionOutValue
Byte[]

Tablica zawierająca Byte dane wyjściowe zwrócone przez operację.

Zwraca

Liczba bajtów w parametrze optionOutValue .

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Podjęto próbę zmiany trybu blokowania bez używania Blocking właściwości .

Obiekt wywołujący w stosie wywołań nie ma wymaganych uprawnień.

Przykłady

Poniższy przykład kodu porównuje wyniki funkcji FIONREAD i właściwości 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;
 }

Uwagi

Metoda IOControl zapewnia niski poziom dostępu do systemu Socket operacyjnego bazowego bieżącego Socket wystąpienia klasy. Aby uzyskać więcej informacji, zobacz dokumentację WSAIoctl .

Uwaga

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API Windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Dotyczy

.NET 10 i inne wersje
Produkt Wersje
.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[])

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Ustawia tryby operacyjne niskiego poziomu dla Socket przy użyciu IOControlCode wyliczenia w celu określenia kodów kontrolnych.

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);

Parametry

ioControlCode
IOControlCode

IOControlCode Wartość określająca kod kontrolny operacji do wykonania.

optionInValue
Byte[]

Tablica typu Byte zawierająca dane wejściowe wymagane przez operację.

optionOutValue
Byte[]

Tablica typu Byte zawierająca dane wyjściowe zwrócone przez operację.

Zwraca

Liczba bajtów w parametrze optionOutValue .

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Podjęto próbę zmiany trybu blokowania bez używania Blocking właściwości .

Przykłady

Poniższy przykład kodu porównuje wyniki wywołania IOControl z właściwością DataToRead i Available .

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;
}

Uwagi

Ta metoda zapewnia niski poziom dostępu do systemu Socket operacyjnego bazowego bieżącego Socket wystąpienia klasy. Aby uzyskać więcej informacji, zobacz dokumentację WSAIoctl .

Uwaga

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API Windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Dotyczy

.NET 10 i inne wersje
Produkt Wersje
.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