DNSMap.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #pragma once
  2. #include <string>
  3. #include <map>
  4. #include "DNSMapTypes.h"
  5. #include "CriticalLock.h"
  6. /******************************************************************************
  7. DNS缓存表
  8. 功能:
  9. 缓存DNS条目,并且接口之间线程安全。
  10. 作者:
  11. 佳也 2623168833 jaye8090@qq.com
  12. 时间:
  13. 2013-4-30 到 2013-5-2
  14. ******************************************************************************/
  15. class CDNSMap
  16. {
  17. public:
  18. CDNSMap(void);
  19. ~CDNSMap(void);
  20. /**************************************************************************
  21. 设置错误码起始值
  22. 说明:
  23. 如果没有调用此函数,起始值默认为0
  24. 参数:
  25. nErrCodeBase 起始值
  26. 返回:
  27. 结束值
  28. **************************************************************************/
  29. int SetErrCodeBase(int nErrCodeBase);
  30. //基本接口
  31. public:
  32. /**************************************************************************
  33. 获取域名的IP地址
  34. 参数:
  35. strIP 返回值。IP地址字符串。
  36. strDomain 域名
  37. 返回:
  38. 成功返回0,失败返回错误码。
  39. **************************************************************************/
  40. int GetIPStr(string & strIP, string strDomain);
  41. /**************************************************************************
  42. 获取域名的IP数据
  43. 参数:
  44. ulIPData 返回值。IP数据。
  45. strDomain 域名
  46. 返回:
  47. 成功返回0,失败返回错误码。
  48. **************************************************************************/
  49. int GetIPData(ULONG & ulIPData, string strDomain);
  50. /**************************************************************************
  51. 清除DNS缓存
  52. 返回:
  53. 成功返回0,失败返回错误码。
  54. **************************************************************************/
  55. int ClearDNS(void);
  56. //内部操作
  57. private:
  58. /**************************************************************************
  59. 获取域名的IP地址
  60. 参数:
  61. strIP 返回值。IP地址字符串。
  62. strDomain 域名
  63. 返回:
  64. 成功返回0,失败返回错误码。
  65. **************************************************************************/
  66. int _GetIPStr(string & strIP, string strDomain);
  67. /**************************************************************************
  68. 获取域名的IP数据
  69. 参数:
  70. ulIPData 返回值。IP数据。
  71. strDomain 域名
  72. 返回:
  73. 成功返回0,失败返回错误码。
  74. **************************************************************************/
  75. int _GetIPData(ULONG & ulIPData, string strDomain);
  76. /**************************************************************************
  77. 清除DNS缓存
  78. 返回:
  79. 成功返回0,失败返回错误码。
  80. **************************************************************************/
  81. int _ClearDNS(void);
  82. /**************************************************************************
  83. 解析域名
  84. 参数:
  85. ulIPData 返回值。IP数据。
  86. strDomain 域名
  87. 返回:
  88. 成功返回0,失败返回错误码。
  89. **************************************************************************/
  90. int _ParseDomain(ULONG & ulIPData, string strDomain);
  91. //内部数据
  92. private:
  93. static int m_nErrCodeBase; //错误码起始值
  94. map<string, ULONG> m_mapDNS; //DNS缓存表
  95. CCriticalLock m_lockDNS; //DNS互斥锁
  96. };