Поделиться через


Socket.IOControl Метод

Определение

Задает низкоуровневые режимы работы для .Socket

Перегрузки

Имя Описание
IOControl(Int32, Byte[], Byte[])

Задает низкоуровневые режимы работы для Socket использования числовых кодов управления.

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

Задает низкоуровневые режимы работы для перечисленияIOControlCode, Socket чтобы указать коды элементов управления.

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

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Задает низкоуровневые режимы работы для Socket использования числовых кодов управления.

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

Параметры

ioControlCode
Int32

Значение Int32 , указывающее код элемента управления для выполнения операции.

optionInValue
Byte[]

Byte Массив, содержащий входные данные, необходимые для операции.

optionOutValue
Byte[]

Byte Массив, содержащий выходные данные, возвращаемые операцией.

Возвращаемое значение

Количество байтов в параметре optionOutValue .

Исключения

Произошла ошибка при попытке доступа к сокету.

Он Socket был закрыт.

Предпринята попытка изменить режим блокировки без использования Blocking свойства.

Вызывающий объект в стеке вызовов не имеет необходимых разрешений.

Примеры

В следующем примере кода сравниваются результаты FIONREAD и свойства Available.

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

Комментарии

Метод IOControl предоставляет низкоуровневый доступ к операционной системе Socket , лежащей в основе текущего экземпляра Socket класса. Дополнительные сведения см. в документации по WSAIoctl .

Замечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Замечание

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

Применяется к

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

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Задает низкоуровневые режимы работы для перечисленияIOControlCode, Socket чтобы указать коды элементов управления.

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

Параметры

ioControlCode
IOControlCode

IOControlCode Значение, указывающее код элемента управления для выполнения операции.

optionInValue
Byte[]

Массив типа Byte , содержащий входные данные, необходимые для операции.

optionOutValue
Byte[]

Массив типа Byte , содержащий выходные данные, возвращаемые операцией.

Возвращаемое значение

Количество байтов в параметре optionOutValue .

Исключения

Произошла ошибка при попытке доступа к сокету.

Он Socket был закрыт.

Предпринята попытка изменить режим блокировки без использования Blocking свойства.

Примеры

В следующем примере кода сравниваются результаты вызова IOControl с DataToRead свойством Available .

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

Комментарии

Этот метод обеспечивает низкоуровневый доступ к операционной системе Socket , базовой текущей экземпляру Socket класса. Дополнительные сведения см. в документации по WSAIoctl .

Замечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

Замечание

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

Применяется к