00001 #ifndef IPCALC_H 00002 #define IPCALC_H 00003 00004 #include <string> 00005 #include <vector> 00006 00007 using namespace std; 00008 00009 namespace net 00010 { 00016 class IPCalc 00017 { 00018 00019 public: 00020 00021 static const unsigned long kCLASS_A; 00022 static const unsigned long kCLASS_B; 00023 static const unsigned long kCLASS_C; 00024 static const unsigned long kCLASS_A_NETWORK_MASK; 00025 static const unsigned long kCLASS_B_NETWORK_MASK; 00026 static const unsigned long kCLASS_C_NETWORK_MASK; 00027 00033 IPCalc(string aString1,string aString2); 00034 00040 IPCalc(unsigned long aLong1,unsigned long aLong2); 00041 00046 unsigned long getAddress(); 00047 00052 unsigned long getNetworkAddress(); 00053 00058 unsigned long getIPClass(); 00059 00064 unsigned long getHostNumber(); 00065 00070 unsigned long getFirstHost(); 00071 00076 unsigned long getLastHost(); 00077 00082 unsigned long getNetMask(); 00083 00089 int isInSameNet(IPCalc aIpc); 00090 00095 int isHost(); 00096 00101 int isNetwork(); 00102 00106 void display(); 00107 00112 int checkAddress(); 00113 00114 private: 00119 unsigned long getClassMask(); 00120 00124 unsigned int mAddr; 00125 00129 unsigned int mNetMask; 00130 00131 }; 00132 00133 void display_bin(unsigned long); 00134 unsigned long str2long(string aAddr); 00135 } 00136 00137 #endif