Socket::IOControl Method (IOControlCode, array<Byte>^, array<Byte>^)
Sets low-level operating modes for the Socket using the IOControlCode enumeration to specify control codes.
Assembly: System (in System.dll)
public: int IOControl( IOControlCode ioControlCode, array<unsigned char>^ optionInValue, array<unsigned char>^ optionOutValue )
Parameters
- ioControlCode
-
Type:
System.Net.Sockets::IOControlCode
A IOControlCode value that specifies the control code of the operation to perform.
- optionInValue
-
Type:
array<System::Byte>^
An array of type Byte that contains the input data required by the operation.
- optionOutValue
-
Type:
array<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 in the .NET Framework. |
The following code example compares the results of calling IOControl with DataToRead and the Available property.
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; }
to execute unmanaged code. Associated enumeration: UnmanagedCode.
Available since 2.0
