C/S构架学习之WSAStartup()函数使用

WSAStartup()函数作用

WinSock(Windows Socket)编程依赖于系统提供的动态链接库(DLL)。

使用 DLL 之前必须把 DLL 加载到当前程序,可以在编译时加载,也可以在程序运行时加载。

使用 WinSock DLL 库编程之前,需要调用 WSAStartup()函数进行初始化,以指明 WinSock 规范的版本。

WSAStartup()使用

原型:

int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
  1. wVersionRequested——WinSock版本号,低字节为主版本号,高字节为副版本号。它的类型为 WORD,等价于 unsigned short,是一个整数,所以需要用 MAKEWORD() 宏函数对版本号进行转换。
    例如:
    MAKEWORD(1, 2);  //主版本号为1,副版本号为2,返回 0x0201
    MAKEWORD(2, 2);  //主版本号为2,副版本号为2,返回 0x0202
    
  2. lpWSAData——指向WSAData结构体的指针。
WSAData结构体

WSAStartup() 函数执行成功后,会将与 ws2_32.dll 有关的信息写入 WSAData 结构体变量。

WSAData 定义如下:

typedef struct WSAData {
    WORD           wVersion;  //ws2_32.dll 建议我们使用的版本号
    WORD           wHighVersion;  //ws2_32.dll 支持的最高版本号
    //一个以 null 结尾的字符串,用来说明 ws2_32.dll 的实现以及厂商信息
    char           szDescription[WSADESCRIPTION_LEN+1];
    //一个以 null 结尾的字符串,用来说明 ws2_32.dll 的状态以及配置信息
    char           szSystemStatus[WSASYS_STATUS_LEN+1];
    unsigned short iMaxSockets;  //2.0以后不再使用
    unsigned short iMaxUdpDg;  //2.0以后不再使用
    char FAR       *lpVendorInfo;  //2.0以后不再使用
} WSADATA, *LPWSADATA;

WSAStartup()使用范例

#include <stdio.h>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")

int main(){
    WSADATA wsaData;
    WSAStartup( MAKEWORD(2, 2), &wsaData);
 
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值