Windows Sockets 网络编程——第十章 支持例程

第十章 支持例程

10.1 启动与清除

每一个WinSock应用程序必须在开始操作前初始化WinSock的动态链接库(DLL),并在操作完成后通知DLL进行清除操作。WinSock应用程序在开始时必须调用WSAStartup()函数,结束时必须调用WSACleanup()函数。可以多次调用这两个函数,但是必须保证它们是成对出现的。
在系统内部,WSAStartup()函数从0开始增加引用计数量,而WSACleanup()函数减少引用计数量。当引用计数量减为0时,WinSock DLL才释放资源。

10.1.1 WSAStartup()

WSAStartup()函数必须是WinSock应用程序使用的第一个WinSock函数。否则,其他的WinSock API函数都将会失败并返回错误值WSAENOTNITIALISED。WinSock DLL使用这个函数来注册调用任务并分配必要的资源。
下面是WSAStartup()函数的原型:

int WSAAPI WSAStartup(
    WORD wVersionRequired,    //hightest version of WinSock API 
    LPWSADATA lpWSAData       //ptr to struct to receive details on Windows Sockets implementation
);

wVersionRequired:应用程序要求的主要和次要的版本号。LSB是主要的版本号,MSB是次要的版本号。
lpWSAData:指向WinSock应用程序提供的缓存区,缓存区中填入的内容为有关WinSock实现的特有信息。
这个函数与其它很多函数有所不同,它在成功时返回0值,返回错误值表示失败。函数的每次成功调用,都将会使引用计数增加1.

typedef struct WSAData {
        WORD                    wVersion;      //version app expected to use
        WORD                    wHighVersion;  //hightest version available
#ifdef _WIN64
        unsigned short          iMaxSockets;   //max sockets available
        unsigned short          iMaxUdpDg;     // max datagram size
        char FAR *              lpVendorInfo;  //no format
        char                    szDescription[WSADESCRIPTION_LEN+1];//no format
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];//no format
#else
        char                    szDescription[WSADESCRIPTION_LEN+1];//no format
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];//no format
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值