shutdown()

shutdown 請注意shutdown WSAEINVAL:how參數非法。

簡述:
禁止在一個套接口上進行數據的接收與傳送。
#include
int PASCAL FAR shutdown( SOCKET s, int how);
s:用於標識一個套接口的描述字。
how:標誌,用於描述禁止哪些操作。
注釋:
shutdown()函式用於任何類型的套接口禁止接收、禁止傳送或禁止收發。
如果how參數為0,則該套接口上的後續接收操作將被禁止。這對於低層協定無影響。對於TCP協定,TCP視窗不改變並接收前來的數據(但不確認)直至視窗滿。對於UDP協定,接收並排隊前來的數據。任何情況下都不會產生ICMP錯誤包。
若how為1,則禁止後續傳送操作。對於TCP,將傳送FIN。
若how為2,則同時禁止收和發。
請注意shutdown()函式並不關閉套接口,且套接口所占有的資源將被一直保持到 closesocket()調用。
評註:
無論SO_LINGER設定與否,shutdown()函式不會阻塞。
一個應用程式不應依賴於重用一個已被shutdown()禁止的套接口。特別地,一個WINDOWS套接口實現不必支持在這樣的套接口上使用connect()調用。
返回值:
如果沒有錯誤發生,shutdown()返回0。否則的話,返回SOCKET_ERROR錯誤,應用程式可通過 WSAGetLastError()獲取相應 錯誤代碼
錯誤代碼:
WSANOTINITIALISED:在使用此API之前應首先成功地調用 WSAStartup()
WSAENETDOWN:WINDOWS套接口實現檢測到網路子系統失效。
WSAEINVAL:how 參數非法
WSAEINPROGRESS:一個阻塞的WINDOWS套接口調用正在運行中。
WSAENOTCONN:套接口未連線(僅適用於SOCK_STREAM類型套接口)。
WSAENOTSOCK:描述字不是一個套接口。
參見:
connect(), socket().

相關詞條

相關搜尋

熱門詞條

聯絡我們