Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12372825
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: C/C++

2015-11-02 16:36:14

  1. typedef struct WSAData {
  2.         WORD wVersion;
  3.         WORD wHighVersion;
  4. #ifdef _WIN64
  5.         unsigned short iMaxSockets;
  6.         unsigned short iMaxUdpDg;
  7.         char FAR * lpVendorInfo;
  8.         char szDescription[WSADESCRIPTION_LEN+1];
  9.         char szSystemStatus[WSASYS_STATUS_LEN+1];
  10. #else
  11.         char szDescription[WSADESCRIPTION_LEN+1];
  12.         char szSystemStatus[WSASYS_STATUS_LEN+1];
  13.         unsigned short iMaxSockets;
  14.         unsigned short iMaxUdpDg;
  15.         char FAR * lpVendorInfo;
  16. #endif
  17. } WSADATA;

WSADATA结构被用来储存调用AfxSocketInit全局函数返回的Windows Sockets初始化信息。


1、WSAStartup

用法:

WSADATA wsaD; 
WSAStartup(MAKEWORD(2,2),&wsaD);

当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。

事实上,如果windows socket程序不加上这句,调用socket()函数是调用不成功的,一直返回-1。


2、WSACleanup

WSAStartup应该与WSACleanup成对使用,WSAStartup的功能是初始化Winsock DLL,WSACleanup是来解除与Socket库的绑定并且释放Socket库所占用的系统资源。

在Windows下,Socket是以DLL的形式实现的。在DLL内部维持着一个计数器,只有第一次调用WSAStartup才真正装载DLL,以后的 调用只是简单的增加计数器,而WSACleanup函数的功能则刚好相反,每调用一次使计数器减1,当计数器减到0时,DLL就从内存中被卸载!因此,你 调用了多少次WSAStartup,就应相应的调用多少次的WSACleanup.


3、WSAGetLastError()

是指该函数返回上次发生的网络错误。

待续......



参考网址:

http://blog.csdn.net/bolike/article/details/7584727

阅读(2895) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~