WSACleanup()

WSACleanup()

WSACleanup()是一個計算機函式,功能是終止Winsock 2 DLL (Ws2_32.dll) 的使用,函式原型是int PASCAL FAR WSACleanup (void)。

基本介紹

  • 中文名:WSACleanup()
  • 功能:終止Winsock 2 DLL  的使用.
  • 頭檔案:#include <Winsock2.h>
  • 參見::WSAStartup()
簡述,頭檔案,引用庫,函式原型,返回值,注釋,

簡述

頭檔案

#include <Winsock2.h>

引用庫

#pragma comment(lib, "ws2_32.lib")
靜態加入一個lib檔案也就是庫檔案ws2_32.lib檔案,提供相關API的支持,否則需要動態載入ws2_32.dll

函式原型

int PASCAL FAR WSACleanup (void);

返回值

操作成功返回值為0;否則返回值為SOCKET_ERROR,可以通過調用WSAGetLastError獲取錯誤代碼。
在一個多執行緒的環境下,WSACleanup()中止了Windows Sockets在所有執行緒上的操作.

注釋

:
應用程式或DLL在使用Windows Sockets服務之前必須要進行一次成功的WSAStartup()調用.當它完成了Windows Sockets的使用後,應用程式或DLL必須調用WSACleanup()將其從Windows Sockets的實現中註銷,並且該實現釋放為應用程式或DLL分配的任何資源.任何打開的並已建立連線的SOCK_STREAM類型套接口在調用WSACleanup()時會重置; 而已經由closesocket()關閉卻仍有要傳送的懸而未決數據的套接口則不會受影響- 該數據仍要傳送.
對應於一個任務進行的每一次WSAStartup()調用,必須有一個WSACleanup()調用.只有最後的WSACleanup()做實際的清除工作;前面的調用僅僅將Windows Sockets DLL中的內置引用計數遞減.一個簡單的應用程式為確保WSACleanup()調用了足夠的次數,可以在一個循環中不斷調用WSACleanup()直至返回WSANOTINITIALISED.
返回值:
0 操作成功.
SOCKET_ERROR 否則.同時可以調用WSAGetLastError()獲得錯誤代碼.
評價:
一個常見的Windows Sockets編程錯誤是:試圖在一個阻塞鉤子函式中調用WSACleanup()並且檢測返回值失敗.如果在一次阻塞調用正在進行時應用程式需要退出,應用程式必須首先通過調用WSACancelBlockingCall()使該阻塞操作作廢,然後一旦控制返回給應用程式時就啟動WSACleanup().
關於Windows Sockets提供者的說明:
良好的Windows Sockets應用程式會通過調用WSACleanup()指出它從Windows Sockets實現中註銷.本函式因此可以用來釋放分配給指定應用程式的資源.
Windows Sockets的實現必須能處理應用程式在調用WSACleanup()函式之前就中止的情況.-例如,返回一個錯誤.
Windows Sockets的實現必須確認WSACleanup()調用後,應用程式能調用WSAStartup()函式來重新建立Windows Sockets的套用.
錯誤代碼:
WSANOTINITIALISED 使用本API前必須要進行一次成功的WSAStartup()調用.
WSAENETDOWN Windows Sockets的實現已經檢測到網路子系統故障.
WSAEINPROGRESS 一個阻塞的Windows Sockets操作正在進行.
參見:
WSAStartup()

相關詞條

熱門詞條

聯絡我們