Socket.IOControl 方法

定義

設定 Socket 的低階作業系統模式。

多載

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

使用數值控制碼,設定 Socket 的低階作業模式。

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

使用 Socket 列舉型別指定控制碼,以設定 IOControlCode 的低階作業模式。

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

使用數值控制碼,設定 Socket 的低階作業模式。

C#
public int IOControl(int ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
C#
public int IOControl(int ioControlCode, byte[] optionInValue, byte[] optionOutValue);

參數

ioControlCode
Int32

Int32 值,指定要執行之作業的控制碼。

optionInValue
Byte[]

Byte 陣列,包含作業所需的輸入資料。

optionOutValue
Byte[]

Byte 陣列,包含作業傳回的輸出資料。

傳回

optionOutValue 中的位元組數。

例外狀況

嘗試存取通訊端時發生錯誤。

已嘗試不使用 Blocking 屬性來變更封鎖模式。

呼叫堆疊中的呼叫端沒有所需的使用權限。

範例

下列程式代碼範例會比較 FIONREAD 和 Available 屬性的結果。

C#
 // 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提供對目前 類別實例基礎操作系統的Socket低階存取Socket。 如需詳細資訊,請參閱 WSAIoctl 檔。

備註

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

備註

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

適用於

.NET 10 和其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

使用 Socket 列舉型別指定控制碼,以設定 IOControlCode 的低階作業模式。

C#
public int IOControl(System.Net.Sockets.IOControlCode ioControlCode, byte[]? optionInValue, byte[]? optionOutValue);
C#
public int IOControl(System.Net.Sockets.IOControlCode ioControlCode, byte[] optionInValue, byte[] optionOutValue);

參數

ioControlCode
IOControlCode

IOControlCode 值,指定要執行之作業的控制碼。

optionInValue
Byte[]

Byte 型別的陣列,包含作業所需的輸入資料。

optionOutValue
Byte[]

Byte 型別的陣列,包含作業傳回的輸出資料。

傳回

optionOutValue 中的位元組數。

例外狀況

嘗試存取通訊端時發生錯誤。

已嘗試不使用 Blocking 屬性來變更封鎖模式。

範例

下列程式代碼範例會比較呼叫 IOControl 的結果與 DataToReadAvailable 屬性。

C#
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 Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

備註

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

適用於

.NET 10 和其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1