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