共用方式為


CAsyncSocket::IOCtl

呼叫此成員函式控制通訊端的方式。

BOOL IOCtl(
   long lCommand,
   DWORD* lpArgument 
);

參數

  • lCommand
    命令會執行通訊端。

  • lpArgument
    對應至參數的指標 lCommand的。

傳回值

如果不是零,則函式成功,否則 0 和特定錯誤碼來呼叫 GetLastError擷取。 下列錯誤套用至這個成員函式:

  • WSANOTINITIALISED A 成功 AfxSocketInit 必須在使用此 API 之前發生。

  • WSAENETDOWN 視窗通訊端實作偵測網路子系統失敗。

  • WSAEINVAL   lCommand 不是有效的命令,或 lpArgument 不是 lCommand可接受參數,或無法使用這個命令適用於所提供之通訊端的型別。

  • 封鎖視窗通訊端作業的WSAEINPROGRESS A 正在進行中。

  • WSAENOTSOCK 描述元不是通訊端。

備註

這個常式。所有通訊端可以在任何狀態。 它是用來取得或擷取使用參數與通訊協定無關的通訊端、和子系統通訊。 支援下列命令:

  • FIONBIO 可啟用或停用在通訊端上未封鎖模式。 在 DWORD的 lpArgument 參數指向,為非零的值,如果未封鎖模式是啟用和零,如果要停用。 如果 AsyncSelect 通訊端上發行,則嘗試使用 IOCtl 將通訊端到區塊模式而失敗 WSAEINVAL。 若要將通訊端到區塊模式並防止 WSAEINVAL 錯誤,應用程式必須呼叫以 lEvent 參數的 AsyncSelect 先停用 AsyncSelect 等於 0,然後呼叫 IOCtl

  • FIONREAD 決定可讀取與這個通訊端的一個 接收 呼叫的最大位元組數。 在 IOCtl 儲存結果的 DWORD 的 lpArgument 參數指向。 如果這個通訊端是型別 SOCK_STREAMFIONREAD 傳回可寫入單一 接收資料總數,這通常與通訊端佇列的資料總數。 如果這個通訊端是型別 SOCK_DGRAMFIONREAD 傳回在通訊端佇列的第一個資料包的大小。

  • SIOCATMARK 判斷任何 Out-of-Band 資料是否可讀取。 這只適用於任何 Out-of-Band Data 處置型別 SOCK_STREAM 的通訊端 (SO_OOBINLINE) 的內嵌主應用程式工作。 如果 Out-of-Band 資料不會等候讀取作業,會傳回非零。 否則,它會傳回 0,而且在通訊端 (Socket) 或 ReceiveFrom 執行的下一個 接收 會擷取緊接在「標記之前的」部分或全部資料,應用程式應使用 SIOCATMARK 作業判斷資料是否仍存在。 如果在「緊急」(Out-of-Band) 資料之前的任何標準資料,其順序會收到。 ( 接收ReceiveFrom 永遠不會逐漸相同的 Out-Of-Band 和標準資料的呼叫) 的注意事項。在 IOCtl 儲存結果的 DWORD 的 lpArgument 參數指向。

這個函式是 ioctl() 的子集 (使用於 Berkeley 通訊端。 特別是,與 FIOASYNC相等,命令,而 SIOCATMARK 是唯一支援的通訊端層級命令。

需求

Header: afxsock.h

請參閱

參考

CAsyncSocket 類別

階層架構圖

CAsyncSocket::AsyncSelect

CAsyncSocket::Create

CAsyncSocket::GetSockOpt

CAsyncSocket::SetSockOpt