加载Winsock库函数 : WSAStartup



1 int WSAStartup(
2 WORD wVersionRequested,//指定想要加载的winsock库
3 LPWSADATA lpWSAData//指向 WSADATA的指针,用来返回DLL库的详细信息
4 );


WSADat头结构



1 typedef struct WSAData
2 {
3 WORD wVersion; //库文件建议应用程序使用的版本
4 WORD wHighVersion; //库文件支持的最高版本
5 char szDescription[WSADESCRIPTION_LEN+1]; //库描述字符串
6 char szSystemStatus[WSASYS_STATUS_LEN+1]; //系统状态字符串
7 unsigned short iMaxSockets; //同时支持的最大套接字的数量
8 unsigned short iMaxUdpDg; //2.0版中已废弃的参数
9 char FAR* lpVendorInfo; //已废弃的参数
10 }WSADATA,FAR* LOWSADATA;


每一个WSAStart调用必须对应一个队WSAClean的调用,这个函数用来释放winsock库



int WSACleanup(void);


如果想使用winsock库,应该包含对应的库文件



1 #pragma comment(lib,"WS2_32")


以后封装的经常用到的CInitSock类



1 #include <winsock2.h>
2 #pragma comment(lib,"WS2_32")
3 class CInitSock
4 {
5 public:
6 CInitSock(BYTE minorVer=2,BYTE majorVer=2)
7 {
8 WSADATA wsaData;
9 WORD sockVersion = MAKEWORD(minorVer,majorVer);
10 if(::WSAStartup(sockVersion,&wsaData)!=0)
11 {
12 exit(0);
13 }
14 }
15 ~CInitSock()
16 {
17 ::WSACleanup();
18 }
19 };


作者:​​xingoo​