
WSACl布率作管eanup()是一个来自计算机函数,功能是终止Winsock 2 DLL (Ws2_32360百科.dll) 的使用重陆顾升绍去阳印,函数原型是int PASCAL FAR WSACleanup (void)。
- 中文名称 WSACleanup()
- 功能 终止Winsock 2 DLL 的使用.
- 头文件 #include <Winsock2.h>
- 参见: WSAStartup()
简述
头文件
#include <Winsock2.玉哥海情粮父即h>
引用库
#pragma comment(lib, "ws2_32.来自lib")
静态加360百科入一个lib文件也就是库文件ws2_32.l为ib文件,提供相关API的支持,否则需要动态载入ws2_32.dll。
函数原型
int PASCAL 色曲笔FAR WSACleanup (void);
返回值
操作成耐笑病脱民功返回值为0;否则返回值为SOCKET_ERROR,可以通过调用WSAGetLastError获取错误代码。
在一个多线程的环境下,WSACle章各敌毛anup()中止了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 Socket景带触即s实现中注销.本状状叶师即术害曲函数因此可以用来释放分配给指定应用程序的资源.
Windows Sockets的实现必须能处理应用程序在调用WSAClean处视推调铁古婷翻花up()函数之前就中止的情况.-例如,返回一个错误.
Windows Sockets的实现必须确认WSACleanup()调用后,应用程序能调用WSAStartup()函数来重新建立Windows Sockets的应用.
错误代码:
WSANOTINI双八助机除TIALISED 使用本API前必须要进行一次成功的WSAStartup()调用.
WSAENETDOWN Windows Sockets的实现已经检测到网络子系统故障.
WSAEINPROGRESS 一个阻塞的Windows Sockets操作正在进行.
参见:
WSAStartup()