最近 一直在看MFC编程,并且动手实现了一款能够获取服务器信息的客户端,总共分为两个部分(服务器,客户端(带界面的))下面就来看看实现的方法与步奏。
一、服务器
1.第一步加载套接字库
由于Winsock的服务事宜动态链接库Winsock DLL形式实现的,因此必须先调用WSAStartup函数对Winsock DLL 进行初始化,获取Winsock的版本支持,并分配必要的资源。
总之函数有两个作用
- 加载套接字库
- 进行套接字库的版本协商(确定使用哪个版本的套接字库)
https://msdn.microsoft.com/en-us/library/windows/desktop/ms742213(v=vs.85).aspx
这里有着调用WSAStartup函数的例子直接拷贝下面是网页上的代码片段
int __cdecl main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
/* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0) {
/* Tell the user that we could not find a usable */
/* Winsock DLL. */
printf("WSAStartup failed with error: %d\n", err);
return 1;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
printf("Could not find a usable version of Winsock.dll\n");
WSACleanup();
return 1;
}
}
把上面的代码稍加修改得到如下代码:
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}