Socket.IOControl Method (Int32, Byte[], Byte[])
Sets low-level operating modes for the Socket using numerical control codes.
Assembly: System (in System.dll)
Parameters
- ioControlCode
-
Type:
System.Int32
An Int32 value that specifies the control code of the operation to perform.
- optionInValue
-
Type:
System.Byte[]
A Byte array that contains the input data required by the operation.
- optionOutValue
-
Type:
System.Byte[]
A Byte array 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. |
| SecurityException | A caller in the call stack does not have the required permissions. |
The IOControl method provides low-level access to the operating system Socket underlying the current instance of the Socket class. For more information, 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 in the .NET Framework. |
The following code example compares the results of FIONREAD and the Available property.
// 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; }
to execute unmanaged code. Associated enumeration: UnmanagedCode.
Available since 1.1
