套接字学习1

来源:互联网 发布:阿里云设置mx记录 编辑:程序博客网 时间:2024/05/21 06:11

/*每天总结一个套接字函数 */
第一天总结WSAStartup()函数
int WSAStartup(WORD wVersionRequeted,LPWSADATA wData);

首先WSAStartup的功能:加载socket库!一旦加载成功,系统就自动将socket库加载到应用程序中,然后,在编程中就可以自由的调用socket函数了。至于在windows下为什么要这样用,可能是动态链接的原因吧(我是初学者,解释不清楚,求大牛给个答复?)

1. 对于WSAStartup()的第一WORD型的参数可以这样理解:

WORD 分两个字节 高字节存储次版本号,低字节存储主版本号同时我们在给wVersionRequested变量赋值的时候要用到另外一个函数

WORD MAKEWORD(  BYTE  bLow;  //指定变量的低字节  BYTE bHigh;  //指定变量的高字节)

/*那么高字节很明显是对应次版本,低字节对应的主版本*/

2.对于WSAStartup()的另外一个参数我们可以理解为一个结构体的指针。what??结构体,没错!

struct WSAData {   WORD wVersion;   WORD wHighVersion;   char szDescription[WSADESCRIPTION_LEN+1];   char szSystemStatus[WSASYSSTATUS_LEN+1];   unsigned short iMaxSockets;   unsigned short iMaxUdpDg;   char *lpVendorInfo;}; 

/*WSADATA结构被用来保存函数WSAStartup返回的Windows Sockets初始化信息。*/

 通常情况下 wVersion保存的信息和wHighWersion是一样的都是主版本号,后面几个貌似暂时没有用上,具体是什么意思暂时还不是很理解。

这个两个参数都知道了,现在到了动手做的时候了,调用WSAStartup()函数具体操作:

#include < iostream >#include < cstdio   >#include <winsock2.h>using namespace  std;#pragma comment(lib , "ws2_32.lib")int main (){int root;WORD wVersion;WSADATA wData;wVersion=MAKEWORD(2,0);root=WSAStartup(wVersion,&wData);if(root!=0){puts("创建失败");return 0;}if(LOBYTE(wData.wVersion)!=2 || HIBYTE(wData.wVersion)!=0){WSACleanup();puts("版本号错误");return 0;}WSACleanup();return 0;}


 

 

原创粉丝点击