Winsock 的启动和终止

由于 Winsock 的服务是以动态链接库 Winsock DLL 形式实现的,所以必须先调用WSAStartup 函数对 Winsock DLL 进行初始化,协商 Winsock 的版本支持,并分配必要的资源。如果在调用 Winsock 函数之前,没有加载 Winsock 库,则会返回 SOCKET_ERROR错误,错误的信息是 WSANOTINITIALIZED。WSAStartup 函数原型为:int  WSAStartup(WORD  wVersionRequested,LPWSADATA lpWSAData); 

其中,参数 wVersionRequested 指定应用要使用的 Windows Sockets 最高版本,其中高位字节表示辅版本号,低位字节表示主版本号。目前使用最广泛的是 Windows Sockets 1.1版本,最高版本已经是 2.0 版本。一般用宏 MAKEWORD(X,Y)获得wVersionRequested 的正确值。如 MAKEWORD(2,0)表示使用 Windows Sockets2.0  版本。参数 lpWSAData 指向 WSADATA 结构的指针。该结构包含了加载的库版本的有关的信息。该函数成功则返回 0,失败则返回如下可能值。

(1) WSASYSNOTREADY:表示网络设备没有准备好。
(2) WSAVERNOTSUPPORTED:Winsock 的版本信息号不支持。
(3) WSAEINPROGRESS:一个阻塞式的 Winsock1.1 存在于进程中。
(4) WSAEPROCLIM:已经达到 Winsock 使用量的上限。
(5) WSAEFAULT:lpWSAData 不是一个有效的指针。
此外,在应用程序关闭套接字后,还应调用 WSACleanup 函数终止对 Winsock DLL 的使用,并释放资源,以备下一次使用。WSACleanup 函数的原型为:
int  WSACleanup(void); 该函数不带任何参数,若调用成功则返回 0,否则返回错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值