int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData);
(1)wVersionRequested參數(shù)用于指定準備加載的Winsock庫的版本。高位字節(jié)指定所需要的Winsock庫的副版本,而低位字節(jié)則是主版本??捎肕AKEWORD(x,y)(其中,x是高位字節(jié),y是低位字節(jié))方便地獲得wVersionRequested的正確值。
(2)lpWSAData參數(shù)是指向WSADATA結構的指針,WSAStartup用其加載的庫版本有關的信息填在這個結構中。
(3)WSADATA結構定義如下:
![[轉載]套接字編程中的WSAStartup函數(shù)說明 原始套接字編程](http://img.413yy.cn/images/31101031/31033624t01b85cf6124f0bedcb.jpg)
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
} WSADATA, *LPWSADATA;
WSAStartup把第一個字段wVersion設成打算使用的Winsock版本。wHighVersion參數(shù)容納的是現(xiàn)有的Winsock庫的最高版本。記住,這兩個字段中,高位字節(jié)代表的是Winsock副版本,而低位字節(jié)代表的則是Winsock主版本。szDescription和szSystemStatus這兩個字段由特定的Winsock實施方案設定,事實上沒有用。不要使用下面這兩個字段:iMaxSockets和iMaxUdpDg,它們是假定同時最多可打開多少套接字和數(shù)據(jù)報的最大長度。然而,要知道數(shù)據(jù)報的最大長度應該通過WSAEnumProtocols來查詢協(xié)議信息。同時最多可打開套接字的數(shù)目不是固定的,很大程度上和可用物理內存的多少有關。最后,lpVendorInfo字段是為Winsock實施方案有關的指定廠商信息預留的。任何一個Win32平臺上都沒有使用這個字段。
如果WinSock.dll或底層網絡子系統(tǒng)沒有被正確初始化或沒有被找到,WSAStartup將返回WSASYSNOTREADY。此外這個函數(shù)允許你的應用程序協(xié)商使用某種版本的WinSock規(guī)范,如果請求的版本等于或高于DLL所支持的最低版本,WSAData的wVersion成員中將包含你的應用程序應該使用的版本,它是DLL所支持的最高版本與請求版本中較小的那個。反之,如果請求的版本低于DLL所支持的最低版本,WSAStartup將返回WSAVERNOTSUPPORTED。關于WSAStartup更詳細的信息,請查閱MSDN中的相關部分。
對于每一個WSAStartup的成功調用(成功加載WinSockDLL后),在最后都對應一個WSACleanUp調用,以便釋放為該應用程序分配的資源。
愛華網

