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;
}