Window網路編程之Winsock(一)
Winsock的標頭檔可庫
Winsock有兩個主要版本,即Winsock 1和Winsock 2,兩者都能在除了Windows CE外(Winsock CE 只支援Winsock 1)的所有Window平台上運行。開發Window網路程式時,
把WINSOCK2。H包含到應用程式中,對應的串連庫是WS2_32.lib庫。代碼如下:
#include <winsock2.h>
#pragma comment (lib,"ws2_32.lib")
開始初始化Winsock庫,調用WSAstartup(…)
int WSAStartup(
WORD wVersionRequested, //Winsock庫的版本號碼,可以用MAKEWOR(2,2)
LPWSADATA lpWSAData //一個載入庫版本的有關資訊
);
在使用Winsock介面編好程式後應該調用WSACleanup函數,這個函數主要釋放所有由Winsock分配的資源,並取消這個應用程式掛起的Winsock調用。
int WSACleanup(void);
現在就可以寫個簡單的Winsock網路程式架構了:
#include <cstdlib>
#include <iostream>
#include <Winsock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main(int argc, char *argv[])
{
WSADATA wsaData;
//初始化Winsock版本2.2
int ret = WSAStartup(MAKEWORD(2,2),&wsaData);
if(ret != 0)
{
//注意:因為Winsock沒有載入,所以我們不能使用WSAGetLastError
//來確定導致故障的特定錯誤。我們只能根據返回狀態判斷
cout<<"WSAStartup failed with error "<<ret<<endl;
WSACleanup();
return 0;
}
//這裡就是我們建立socket要串連或者監聽代碼了
//......
//如果程式結束調用 WSACleanup
WSACleanup();
system("PAUSE");
return EXIT_SUCCESS;
}