#include<WinSock2.h>//网络库。<WinSock.h>
#pragma comment(lib,"Ws2_32.lib")//只有32位的。<Wsock32.lib>对应<WinSock.h>库。
int main(void)
{
WORD wdVersion = MAKEWORD(2,2);//传入MAKEWORD宏里,存入wdVersion里。
//MAKEWORD:原理((WORD)(((BYTE)(((DWORD_PTR)(a))&0xff))| ((WORD)(((BYTE)(((DWORD_PTR)(b)) &0xff)))<<8))。
WSADATA wdScokMsg;
//LPWSADATA lpw = malloc(sizeof(WSADATA));
//int a = *((char*)&wdVersion);
//int b = *((char*)&wdVersion+1);
//WSAStartup(wdVersion, lpw);
int nRes=WSAStartup(wdVersion,&wdScokMsg);
if (0!=nRes)
{
}
//free(lpw);
system("pause");
return 0;
}
WSAStartup:
1、功能:
a、打开网络库/启动网络库,启动这个库,这个库里的函数/功能才能试用。
b、W windows, S socket, A Asynchronous异步 ,S startup 启动
----异步与同步:1、同步:阻塞/卡死状态。
2、异步:多个工作同时进行。
2、参数1:
a、word 类型。---转定义:unsigned short
b、MEKEWORD(主版本,副版本)。wVersionRequired:数据高位是副版本,数据低位是主版本。
c、位运算、内存操作、小端存储。
3、参数2:(版本有:1.0,1.1,2.0,2.1,2.2)
a、系统通过通过这个参数给我们一些配置信息。注意:当参数出现LP P前缀时,说明此处要调用相应类新的地址。
b、wVersion:使用的版本;wHighVersion:系统提供的最高版本。
c、当输入版本不存在:
1、输入1.3,2.3;有主版本,无副版本;得到该主版本最大副版本1.1,1.2。
2、 输入3.3,3.3;超过最大版本号;使用系统提供的最大的版本2.2。
3、输入0.0,0.1,0.3;主版本是0;网络库打开失败,不支持请求的套接字版本。