ioctlsocket函式說明

2021-06-22 21:54:35 字數 2586 閱讀 5756

控制 套介面的模式。

#include

int pascal far ioctl

socket( 

socket s, long 

cmd, u_long far* argp);

s:乙個標識

套介面的描述字。

cmd:對

套介面s的操作命令。

argp:指向

cmd命令所帶引數的

指標。本函式可用於任一狀態的任一

套介面。它用於獲取與

套介面相關的操作引數,而與具體協議或通訊子系統無關。支援下列命令:

允許或禁止

套介面s的非阻塞模式。argp指向乙個無符號

長整型,如允許非阻塞模式則非零,如禁止非阻塞模式則為零。當建立乙個

套介面時,它就處於阻塞模式(也就是說非阻塞模式被禁止)。這與bsd

套介面是一致的。wsaasynselect()函式將套介面自動設定為非阻塞模式。如果已對乙個

套介面進行了wsaasynselect() 操作,則任何用ioctl

socket()來把套介面]重新設定成阻塞模式的試圖將以wsaeinval失敗。為了把

套介面重新設定成阻塞模式,

應用程式必須首先用wsaasynselect()呼叫(ievent引數置為0)來禁止wsaasynselect()。

確定 套介面s自動讀入的資料量。argp指向乙個無符號

長整型,其中存有ioctl

socket()的返回值。如果s是socket_stream型別,則fionread返回在一次

recv()中所接收的所有資料量。這通常與

套介面中排隊的資料總量相同。如果s是sock_dgram 型,則fionread返回

套介面上排隊的第乙個資料報大小。

確實是否所有的

帶外資料都已被讀入。這個命令僅適用於sock_stream型別的

帶外資料(so_oobinline)。如無

帶外資料等待讀入,則該操作返回true真。否則的話返回false假,下乙個

recv()或

recvfrom()操作將檢索「標記」前一些或所有資料。

應用程式可用siocatmark操作來確定是否有資料剩下。如果在「緊急」(帶外)資料[前有常規資料,則按序接收這些資料(請注意,

recv()和

recvfrom()操作不會在一次呼叫中混淆常規資料與帶外數]據)。argp指向乙個bool型數,ioctl

socket()在其中存入返回值。

本函式為berkeley

套介面函式ioctl()的乙個子集。其中沒有與fioasync等價的命令,siocatmark是

套介面層次支援的唯一命令。

成功後,ioctl

socket()返回0。否則的話,返回socket_error錯誤,

應用程式可通過wsagetlasterror()獲取相應錯誤**。

錯誤**:

wsanotinitialised:在使用此

api之前應首先成功地呼叫wsastartup()。

wsaenetdown:windows

套介面實現檢測到網路子系統失效。

wsaeinval:

cmd為非法命令,或者argp所指引數不適用於該

cmd命令,或者該命令

不適用於此種型別的

套介面。

wsaeinprogress:乙個阻塞的windows

套介面呼叫正在執行中。

wsaenotsock:描述字不是乙個

套介面。

socket(), 

setsockopt(), getsockopt(), wsaasyncselect().

該命令不適用於此種型別的套介面。

wsaeinprogress:乙個阻塞的windows套介面呼叫正在執行中。

wsaenotsock:描述字不是乙個套介面。

下面這段**演示了ioctlsocket函式的使用方式

c++**

#include

#include

#pragma comment(lib, "ws2_32.lib")

void main()

//-------------------------

[1]// set the socket i/o mode: in this case fionbio

// enables or disables the blocking mode for the

// socket based on the numerical value of imode.

// if imode = 0, blocking is enabled;

// if imode != 0, non-blocking mode is enabled.

iresult = ioctlsocket(m_socket, fionbio, &imode);

if (iresult != no_error)

printf("ioctlsocket failed with error: %ld\n", iresult);

}

函式說明python函式巢狀筆記 函式說明

ps 今天上午,非常鬱悶,有很多簡單基礎的問題搞得我有些迷茫,哎,幾天不寫就忘。目前又不當coo,還是得用心記 哦!關於函式內嵌函式作用域的條記 def test i 0defa print locals a printi test 這段,locals 的值為空,說明內嵌的a函式沒有認默引入i de...

CFile Open函式說明

1 nopenflags cfile modecreate 建立乙個新的檔案,如果檔案存在將檔案擷取成長度為0。cfile modenotruncate 此標誌總是與modecreate 配合使用,如果檔案存在,不將檔案擷取成長度為0 如果檔案不存在即建立新檔案。這個功能往往很好用,比如說,當你需要...

signal函式說明

c traps and pitfalls 對signal函式解釋得非常詳細。中void signal int sig,void handler int int int p 這是乙個函式指標,p所指向的函式是乙個不帶任何引數,並且返回值為int的乙個函式.int fun 這個式子與上面式子的區別在於用...