Socket::IOControl Method (Int32, array<Byte>^, array<Byte>^)
Sets low-level operating modes for the Socket using numerical control codes.
Assembly: System (in System.dll)
public: int IOControl( int ioControlCode, array<unsigned char>^ optionInValue, array<unsigned char>^ optionOutValue )
Parameters
- ioControlCode
-
Type:
System::Int32
An Int32 value that specifies the control code of the operation to perform.
- optionInValue
-
Type:
array<System::Byte>^
A Byte array that contains the input data required by the operation.
- optionOutValue
-
Type:
array<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. 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; }
to execute unmanaged code. Associated enumeration: UnmanagedCode.
Available since 1.1
