1 // @(#)root/base:$Id$ 2 // Author: Fons Rademakers 16/12/96 3 4 /************************************************************************* 5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * 6 * All rights reserved. * 7 * * 8 * For the licensing terms see $ROOTSYS/LICENSE. * 9 * For the list of contributors see $ROOTSYS/README/CREDITS. * 10 *************************************************************************/ 11 12 #ifndef ROOT_TInetAddress 13 #define ROOT_TInetAddress 14 15 16 ////////////////////////////////////////////////////////////////////////// 17 // // 18 // TInetAddress // 19 // // 20 // This class represents an Internet Protocol (IP) address. // 21 // Objects of this class can not be created directly, but only via // 22 // the TSystem GetHostByName(), GetSockName(), and GetPeerName() // 23 // members and via members of the TServerSocket and TSocket classes. // 24 // // 25 ////////////////////////////////////////////////////////////////////////// 26 27 #ifndef ROOT_TObject 28 #include "TObject.h" 29 #endif 30 #ifndef ROOT_TString 31 #include "TString.h" 32 #endif 33 34 #include <vector> 35 #ifdef R__GLOBALSTL 36 namespace std { using ::vector; } 37 #endif 38 39 40 class TInetAddress : public TObject { 41 42 friend class TSystem; 43 friend class TUnixSystem; 44 friend class TWinNTSystem; 45 friend class TUUID; 46 friend class TSocket; 47 friend class TUDPSocket; 48 friend class TServerSocket; 49 friend class TXSocket; // special for BaBar 50 51 public: 52 typedef std::vector<UInt_t> AddressList_t; 53 typedef std::vector<TString> AliasList_t; 54 55 private: 56 TString fHostname; // fully qualified hostname 57 Int_t fFamily; // address family 58 Int_t fPort; // port through which we are connected 59 AddressList_t fAddresses; // list of all IP addresses in host byte order 60 AliasList_t fAliases; // list of aliases 61 62 TInetAddress(const char *host, UInt_t addr, Int_t family, Int_t port = -1); 63 void AddAddress(UInt_t addr); 64 void AddAlias(const char *alias); 65 66 public: 67 TInetAddress(); 68 TInetAddress(const TInetAddress &adr); 69 TInetAddress &operator=(const TInetAddress &rhs); 70 virtual ~TInetAddress() { } 71 72 UInt_t GetAddress() const { return fAddresses[0]; } 73 UChar_t *GetAddressBytes() const; 74 const char *GetHostAddress() const; 75 const char *GetHostName() const { return (const char *) fHostname; } 76 Int_t GetFamily() const { return fFamily; } 77 Int_t GetPort() const { return fPort; } 78 const AddressList_t &GetAddresses() const { return fAddresses; } 79 const AliasList_t &GetAliases() const { return fAliases; } 80 Bool_t IsValid() const { return fFamily == -1 ? kFALSE : kTRUE; } 81 void Print(Option_t *option="") const; 82 83 static const char *GetHostAddress(UInt_t addr); 84 85 ClassDef(TInetAddress,4) //Represents an Internet Protocol (IP) address 86 }; 87 88 #endif 89