123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #pragma once
- #include <string>
- #include <map>
- #include "DNSMapTypes.h"
- #include "CriticalLock.h"
- /******************************************************************************
- DNS缓存表
- 功能:
- 缓存DNS条目,并且接口之间线程安全。
- 作者:
- 佳也 2623168833 jaye8090@qq.com
- 时间:
- 2013-4-30 到 2013-5-2
- ******************************************************************************/
- class CDNSMap
- {
- public:
- CDNSMap(void);
- ~CDNSMap(void);
- /**************************************************************************
- 设置错误码起始值
- 说明:
- 如果没有调用此函数,起始值默认为0
- 参数:
- nErrCodeBase 起始值
- 返回:
- 结束值
- **************************************************************************/
- int SetErrCodeBase(int nErrCodeBase);
- //基本接口
- public:
- /**************************************************************************
- 获取域名的IP地址
- 参数:
- strIP 返回值。IP地址字符串。
- strDomain 域名
- 返回:
- 成功返回0,失败返回错误码。
- **************************************************************************/
- int GetIPStr(string & strIP, string strDomain);
- /**************************************************************************
- 获取域名的IP数据
- 参数:
- ulIPData 返回值。IP数据。
- strDomain 域名
- 返回:
- 成功返回0,失败返回错误码。
- **************************************************************************/
- int GetIPData(ULONG & ulIPData, string strDomain);
- /**************************************************************************
- 清除DNS缓存
- 返回:
- 成功返回0,失败返回错误码。
- **************************************************************************/
- int ClearDNS(void);
- //内部操作
- private:
- /**************************************************************************
- 获取域名的IP地址
- 参数:
- strIP 返回值。IP地址字符串。
- strDomain 域名
- 返回:
- 成功返回0,失败返回错误码。
- **************************************************************************/
- int _GetIPStr(string & strIP, string strDomain);
- /**************************************************************************
- 获取域名的IP数据
- 参数:
- ulIPData 返回值。IP数据。
- strDomain 域名
- 返回:
- 成功返回0,失败返回错误码。
- **************************************************************************/
- int _GetIPData(ULONG & ulIPData, string strDomain);
- /**************************************************************************
- 清除DNS缓存
- 返回:
- 成功返回0,失败返回错误码。
- **************************************************************************/
- int _ClearDNS(void);
- /**************************************************************************
- 解析域名
- 参数:
- ulIPData 返回值。IP数据。
- strDomain 域名
- 返回:
- 成功返回0,失败返回错误码。
- **************************************************************************/
- int _ParseDomain(ULONG & ulIPData, string strDomain);
- //内部数据
- private:
- static int m_nErrCodeBase; //错误码起始值
- map<string, ULONG> m_mapDNS; //DNS缓存表
- CCriticalLock m_lockDNS; //DNS互斥锁
- };
|