Socket.IOControl 方法

定义

Socket 设置低级别操作模式。

重载

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

使用数字控制代码,为 Socket 设置低级操作模式。

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

使用 Socket 枚举指定控制代码,为 IOControlCode 设置低级操作模式。

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

Source:
Socket.cs
Source:
Socket.cs
Source:
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 参数中的字节数。

例外

尝试访问套接字时出错。

尝试不使用 Blocking 属性更改阻止模式。

调用堆栈中的调用方没有所需的权限。

示例

下面的代码示例比较 FIONREAD 和 Available 属性的结果。

// 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;
}
 // 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 提供对 类的当前实例基础操作系统 SocketSocket 低级别访问。 有关详细信息,请参阅 WSAIoctl 文档。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。 获取此代码后,请参阅 Windows 套接字版本 2 API 错误代码 文档,获取错误的详细说明。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

适用于

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

使用 Socket 枚举指定控制代码,为 IOControlCode 设置低级操作模式。

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 参数中的字节数。

例外

尝试访问套接字时出错。

尝试不使用 Blocking 属性更改阻止模式。

示例

下面的代码示例将调用 IOControl 的结果 DataToRead 与 和 Available 属性进行比较。

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

注解

此方法提供对类当前实例基础操作系统 SocketSocket 低级别访问。 有关详细信息,请参阅 WSAIoctl 文档。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。 获取此代码后,请参阅 Windows 套接字版本 2 API 错误代码 文档,获取错误的详细说明。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

适用于