00001
00002
00003 #ifndef gNET_X_H
00004 #define gNET_X_H
00005
00006 #include "gstring.h"
00007 #include "glist.h"
00008 #include "gcontrol.h"
00009
00010 #ifdef linux
00011 #include <netinet/in.h>
00012 #else
00013 typedef t_uint32 in_addr_t;
00014 #endif //linux
00015
00016 #define STG_SVC_IDX_SOCK 1
00017 #define STG_SVC_KND_SOCK 128
00018
00019
00020
00021 typedef t_uint64 t_gIpAddr;
00022
00023
00024
00025
00026 class gIpAddr : public gControl {
00027 public:
00028 gIpAddr (char* ipStr=nil) ;
00029 gIpAddr (t_uint8 c1, t_uint8 c2, t_uint8 c3, t_uint8 c4) ;
00030 virtual ~gIpAddr () ;
00031
00032
00033 t_uint8 b1, b2, b3, b4;
00034
00035
00036 virtual bool IsOk () ;
00037 virtual t_uchar* String () ;
00038 virtual t_uchar* ToString (t_uchar* uBuf) ;
00039
00040 t_uint8 GetB1 () {
00041 return b1;
00042 }
00043 t_uint8 GetB2 () {
00044 return b2;
00045 }
00046 t_uint8 GetB3 () {
00047 return b3;
00048 }
00049 t_uint8 GetB4 () {
00050 return b4;
00051 }
00052
00053
00054 virtual void Reset () ;
00055 virtual void SetAddr (t_gIpAddr nboAddr) ;
00056 virtual bool SetAddrFromStr (char* str) ;
00057
00058
00059 virtual t_gIpAddr GetNetworkAddress () ;
00060 virtual in_addr_t GetHostAddress () {
00061 return thisGetHostByteOrder( GetNetworkAddress() );
00062 }
00063
00064 virtual int GetHostByName (char* hostname) ;
00065 virtual int GetHostByAddr (gString& sRes) ;
00066
00067
00068 gIpAddr& operator= (gIpAddr& copy) ;
00069
00070
00071 virtual void Show (bool doShowAll=true) ;
00072
00073 protected:
00074 unsigned long thisGetIP (t_uint8 a1, t_uint8 a2, t_uint8 a3, t_uint8 a4) ;
00075 unsigned long thisGetHostByteOrder (t_gIpAddr netByteOrder) ;
00076 int thisSetIPfromHostByteOrder (in_addr_t hostByteOrder) ;
00077 int thisSetIPfromHostEnt (char* h_addr, int h_length) ;
00078 int thisGetHostByAddr (char* ipStr, gString& sRes, gList& lRes) ;
00079
00080 private:
00081 gString addrStr;
00082
00083
00084 gIpAddr (gIpAddr& ) ;
00085 };
00086
00087 class gIpV4Mask : public gSwitch {
00088 public:
00089
00090
00091 enum eClass {
00092 e_NoClass,
00093 e_ClassA,
00094 e_ClassB,
00095 e_ClassC,
00096 e_ClassD,
00097 e_ClassE
00098
00099 };
00100
00101
00102
00103
00104
00105 enum ePrivateAddrSpace {
00106 e_none,
00107 e_P010 = 8,
00108 e_P172 = 12,
00109 e_P192 = 16
00110 };
00111
00112 gIpV4Mask (t_uint32 aMask=0) ;
00113 gIpV4Mask (t_uint8 bitsCIDR) ;
00114 gIpV4Mask (eClass addrClass) ;
00115 virtual ~gIpV4Mask () ;
00116
00117
00118 t_uint8 nBitsCIDR;
00119 t_uint32 mask;
00120
00121
00122 virtual void SetBitsCIDR (t_uint8 bitsCIDR) ;
00123
00124 protected:
00125 int thisSetNBitsFromMask (t_uint32 aMask) ;
00126
00127 private:
00128
00129 gIpV4Mask (gIpV4Mask& ) ;
00130 gIpV4Mask& operator= (gIpV4Mask& ) ;
00131 };
00132
00133 class gHostAddr : public gIpAddr {
00134 public:
00135 gHostAddr (char* hostStr) ;
00136 gHostAddr (t_uint8 c1, t_uint8 c2, t_uint8 c3, t_uint8 c4) ;
00137 gHostAddr (gIpAddr& ipAddr) ;
00138 virtual ~gHostAddr () ;
00139
00140
00141 virtual bool IsOk () ;
00142 virtual t_uchar* String () ;
00143 virtual char* GetHostName () {
00144 return destHostStr.Str();
00145 }
00146
00147
00148 virtual bool SetHostName (char* hostStr) ;
00149
00150
00151 virtual void Show (bool doShowAll=true) ;
00152
00153 protected:
00154 gString destHostStr;
00155
00156 private:
00157
00158 gHostAddr (gHostAddr& ) ;
00159 gHostAddr& operator= (gHostAddr& ) ;
00160 };
00161
00162 class gSocket : public gInt {
00163 public:
00164
00165 enum eSocketKind {
00166 e_None,
00167 e_TCP = 1,
00168 e_UDP = 2,
00169 e_other
00170 };
00171
00172 gSocket (int socketHandle, eSocketKind socketKind) ;
00173 virtual ~gSocket () ;
00174
00175
00176 virtual bool IsOk () ;
00177 virtual bool IsOpened () ;
00178 virtual bool IsConnected () ;
00179 virtual int Handle () ;
00180
00181
00182 virtual bool Open (t_uchar* uName) ;
00183 virtual bool Close () ;
00184 bool SetConnection (gIpAddr& ipAddr) ;
00185 bool SetConnection (gHostAddr& hostAddr) ;
00186
00187 protected:
00188 eSocketKind sockKind;
00189 static int sockCount;
00190
00191 private:
00192 gHostAddr* hostConnected;
00193
00194
00195 gSocket (gSocket& ) ;
00196 gSocket& operator= (gSocket& ) ;
00197 };
00198
00199 class gNetConnect : public gControl {
00200 public:
00201 virtual ~gNetConnect () ;
00202
00203
00204 virtual int Handle () = 0;
00205
00206
00207 bool Read (t_uchar& c) ;
00208 bool Read (t_uchar* uBuf, unsigned nBytes) ;
00209 virtual bool ReadLine (gString& s) ;
00210 int Write (char* s) ;
00211 int Write (gString& s) ;
00212 int Write (char* s, unsigned nOctets) ;
00213
00214 protected:
00215 gNetConnect () ;
00216
00217 private:
00218
00219 gNetConnect (gNetConnect& ) ;
00220 gNetConnect& operator= (gNetConnect& ) ;
00221 };
00222
00223 class gTcpConnect : public gNetConnect {
00224 public:
00225 gTcpConnect (char* destHostname, t_gPort cPort, bool doConnect=true) ;
00226 gTcpConnect (t_uint8 c1, t_uint8 c2, t_uint8 c3, t_uint8 c4, t_gPort cPort, bool doConnect=true) ;
00227 virtual ~gTcpConnect () ;
00228
00229
00230 gHostAddr destAddr;
00231 t_gPort destPort;
00232 gSocket socket;
00233
00234
00235 virtual bool IsOk () ;
00236 virtual int Handle () ;
00237 virtual t_uchar* String () ;
00238 virtual t_uchar* ToString (t_uchar* uBuf) ;
00239
00240
00241 bool Connect () ;
00242 virtual bool Close () ;
00243
00244
00245 virtual void Show (bool doShowAll=true) ;
00246
00247 protected:
00248 int thisConnect (gSocket& aSocket) ;
00249
00250 private:
00251
00252 gTcpConnect (gTcpConnect& ) ;
00253 gTcpConnect& operator= (gTcpConnect& ) ;
00254 };
00255
00256 #endif //gNET_X_H
00257