Udostępnij za pośrednictwem


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.

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

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.

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

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

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.

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

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 .

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

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