一个初始化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
- 一个初始化WINSOCK的简单类
- winsock一个简单的例子
- 一个简单的Winsock例子
- 一个简单的完成端口(服务端/客户端)类 c++ winsock
- Winsock 的初始化
- Winsock的初始化
- Winsock的初始化
- 一个简单的初始化问题
- 使用winsock+UDP写的一个简单接收端程序
- 使用winsock+UDP写的一个简单发送端程序
- 使用TCP+winsock写的一个简单服务器程序
- 使用TCP+winsock写的一个简单客户端程序
- 简单的Winsock例程
- 简单的 winsock tcp
- Initializing Winsock 初始化WinSock
- Winsock学习 ----- Winsock初始化
- Winsock初始化
- D3D初始化环境 自己封装的一个简单的类
- 漏洞标题: 支付宝登陆认证重放攻击漏洞
- Elastic Search 设置默认analyzer
- POI操作Excel常用方法总结
- 常用代码备忘录-ClassUtil.java
- Visual basic 通过 ODBC 读写数据库
- 一个初始化WINSOCK的简单类
- Android编程心得-FragmentActivity与Fragment两者交互方法简介
- 一道简单的程序员面试题引发的思考
- sed当中使用变量替换以及执行外部命令
- android4.2代码目录结构说明
- C++14中的lambda简介 (generalized lambda-capture和generic lambda)
- POI操作Excel
- 常用代码备忘录(封装 Apache Commons 的 DbUtils 实现的数据库操作工具类)-DBUtil.java
- Android 的消息队列模型