Socket网络编程
WSAStartup()就是Socket网络编程的初始函数,其含义是:
W -> windows
S -> socket
A ->Asynchrnous 异步
Startup -> 启动
这个函数由三部分组成:
1.参数1指版本号,WORD类型就是一个Unsigned short,两字节,用于指代具体的版本号,可以使用MAKEWORD函数生成WORD类型的版本号。
2.参数2指代一个你声明了的WSADATA的结构体的指针,用来将你初始化的WSA(异步windows socket)存储内容。
3.函数的返回值是函数的监控值,根据int值的不同,告知你不同的问题来源。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
//初始化网络库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested,&wsaData);
if (err != 0)
{
printf("WSAStartup errorNum = %d\n", GetLastError());
return err;
}
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
printf("LOBYTE errorNum = %d\n", GetLastError());
WSACleanup();
return -1;
}
return 0;
}
这里的err是一个用于监控WSAStartup的int值,根据此int值可以方便的告知哪里出现了错误。
WSADATA结构体如下:
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
#ifdef _WIN64
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
#else
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
#endif
} WSADATA, FAR * LPWSADATA;