22 ClassImp(TInetAddress);
27 TInetAddress::TInetAddress()
29 fHostname =
"UnknownHost";
40 TInetAddress::TInetAddress(
const char *host, UInt_t addr, Int_t family, Int_t port)
43 if (!strcmp(host,
"????") || !strcmp(host,
"UnNamedHost"))
44 fHostname = GetHostAddress();
54 TInetAddress::TInetAddress(
const TInetAddress &adr) : TObject(adr)
56 fHostname = adr.fHostname;
57 fFamily = adr.fFamily;
59 fAddresses = adr.fAddresses;
60 fAliases = adr.fAliases;
66 TInetAddress& TInetAddress::operator=(
const TInetAddress &rhs)
69 TObject::operator=(rhs);
70 fHostname = rhs.fHostname;
71 fFamily = rhs.fFamily;
73 fAddresses = rhs.fAddresses;
74 fAliases = rhs.fAliases;
85 UChar_t *TInetAddress::GetAddressBytes()
const
87 UChar_t *addr =
new UChar_t[4];
89 addr[0] = (UChar_t) ((fAddresses[0] >> 24) & 0xFF);
90 addr[1] = (UChar_t) ((fAddresses[0] >> 16) & 0xFF);
91 addr[2] = (UChar_t) ((fAddresses[0] >> 8) & 0xFF);
92 addr[3] = (UChar_t) (fAddresses[0] & 0xFF);
102 const char *TInetAddress::GetHostAddress(UInt_t addr)
104 return Form(
"%d.%d.%d.%d", (addr >> 24) & 0xFF,
114 const char *TInetAddress::GetHostAddress()
const
116 return GetHostAddress(fAddresses[0]);
122 void TInetAddress::Print(Option_t *)
const
125 Printf(
"%s/%s (not connected)", GetHostName(), GetHostAddress());
127 Printf(
"%s/%s (port %d)", GetHostName(), GetHostAddress(), fPort);
130 AddressList_t::const_iterator ai;
131 for (ai = fAddresses.begin(); ai != fAddresses.end(); ++ai) {
132 if (!i) printf(
"%s:", fAddresses.size() == 1 ?
"Address" :
"Addresses");
133 printf(
" %s", GetHostAddress(*ai));
139 AliasList_t::const_iterator ali;
140 for (ali = fAliases.begin(); ali != fAliases.end(); ++ali) {
141 if (!i) printf(
"%s:", fAliases.size() == 1 ?
"Alias" :
"Aliases");
142 printf(
" %s", ali->Data());
151 void TInetAddress::AddAddress(UInt_t addr)
153 fAddresses.push_back(addr);
159 void TInetAddress::AddAlias(
const char *alias)
161 fAliases.push_back(TString(alias));
167 void TInetAddress::Streamer(TBuffer &R__b)
169 if (R__b.IsReading()) {
171 Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
if (R__v) { }
173 R__b.ReadClassBuffer(TInetAddress::Class(),
this, R__v, R__s, R__c);
178 TObject::Streamer(R__b);
179 fHostname.Streamer(R__b);
184 fAddresses.push_back(address);
186 TInetAddress::AddressList_t &R__stl1 = fAddresses;
190 R__stl1.reserve(R__n);
191 for (R__i = 0; R__i < R__n; R__i++) {
194 R__stl1.push_back(R__t1);
196 TInetAddress::AliasList_t &R__stl2 = fAliases;
199 R__stl2.reserve(R__n);
200 for (R__i = 0; R__i < R__n; R__i++) {
202 R__t2.Streamer(R__b);
203 R__stl2.push_back(R__t2);
206 R__b.CheckByteCount(R__s, R__c, TInetAddress::IsA());
208 R__b.WriteClassBuffer(TInetAddress::Class(),
this);