#pragma once #include #include #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 m_mapDNS; //DNS缓存表 CCriticalLock m_lockDNS; //DNS互斥锁 };