Socket.IOControl Method (IOControlCode, Byte[], Byte[])
Sets low-level operating modes for the Socket using the IOControlCode enumeration to specify control codes.
Namespace: System.Net.Sockets
Assembly: System (in System.dll)
public int IOControl( IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue )
Parameters
- ioControlCode
- Type: System.Net.Sockets.IOControlCode
A IOControlCode value that specifies the control code of the operation to perform.
- optionInValue
- Type: System.Byte[]
An array of type Byte that contains the input data required by the operation.
- optionOutValue
- Type: System.Byte[]
An array of type Byte that contains the output data returned by the operation.
| Exception | Condition |
|---|---|
| SocketException | An error occurred when attempting to access the socket. See the Remarks section for more information. |
| ObjectDisposedException | The Socket has been closed. |
| InvalidOperationException | An attempt was made to change the blocking mode without using the Blocking property. |
This method provides low-level access to the operating system Socket underlying the current instance of the Socket class. For more, see the WSAIoctl documentation in the MSDN library.
Note |
|---|
If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error. |
Note |
|---|
This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing. |
The following code example compares the results of calling IOControl with DataToRead and the Available property.
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; }
- SecurityPermission
to execute unmanaged code. Associated enumeration: UnmanagedCode.
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note