一个初始化WINSOCK的简单类

来源:互联网 发布:java 日期正则表达式 编辑:程序博客网 时间:2024/05/22 08:22

Windows下网络编程离不开Winsock.所以写下这个初始化Winsock的类以后直接COPY即可用.废话少说直接上代码如下:

#include <iostream>#include <WinSock2.h>#pragma comment(lib,"WS2_32")class CInitSock  {public: CInitSock(BYTE minorVer=2, BYTE majorVer=2) {  WSADATA wsaData;  WORD sockVersion = MAKEWORD(minorVer, majorVer);  if(::WSAStartup(sockVersion, &wsaData)!=0)  {   exit(0);  }  std::cout<<"Windows Sockets DLL期望调用者使用的Windows Sockets规范的版本: "<<wsaData.wVersion<<std::endl;//0X0202  std::cout<<"这个DLL能够支持的Windows Sockets规范的最高版本.通常它与wVersion相同: "<<wsaData.wHighVersion<<std::endl;//0X0202  std::cout<<"Windows Sockets DLL对Windows Sockets实现的描述: "<<wsaData.szDescription<<std::endl;  std::cout<<"Windows Sockets DLL有关的状态或配置信息: "<<wsaData.szSystemStatus<<std::endl; } ~CInitSock() {  ::WSACleanup(); }};CInitSock InitSock;//全局变量

变量类型BYTE和WORD的定义如下:

typedef unsigned char  BYTE;typedef unsigned short WORD;
MAKEWORD宏的定义如下:
WORD MAKEWORD(BYTE bLow, BYTE bHigh);//低字节+高字节#define MAKEWORD(a, b) ((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8))
WSAData 结构体的定义和相关字段说明如下:

typedef struct WSAData { WORD     wVersion; WORD     wHighVersion; char     szDescription[WSADESCRIPTION_LEN+1]; char     szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets;//只能在仅支持TCP/TP的winsock1.1中使用 为0表示无限制 unsigned short iMaxUdpDg;  //WinSock2.0版中已被废弃 char  *  lpVendorInfo;     //WinSock2.0版中已被废弃}WSADATA;

程序运行结果如下:

Windows Sockets DLL期望调用者使用的Windows Sockets规范的版本: 514这个DLL能够支持的Windows Sockets规范的最高版本.通常它与wVersion相同: 514Windows Sockets DLL对Windows Sockets实现的描述: WinSock 2.0Windows Sockets DLL有关的状态或配置信息: Running
本人郑重声明如下一、本文来自CSDN博客,传送门:http://BlOG.CSDN.NET/yirancpp二、All Rights Reserved. 任何个人或网站转载本文时不得移除本声明.三、不得对文章进行修改,除非明确说明.同时欢迎大家评论转载和分享.
原创粉丝点击