171 // ----------------------------------------------------------------------------- |
171 // ----------------------------------------------------------------------------- |
172 // |
172 // |
173 STATIC METHOD |
173 STATIC METHOD |
174 IPAddress::resolve (String node, bool* ok) -> IPAddress |
174 IPAddress::resolve (String node, bool* ok) -> IPAddress |
175 { |
175 { |
176 struct addrinfo hints; |
176 addrinfo hints; |
177 struct addrinfo* lookup; |
177 addrinfo* lookup; |
178 memset (&hints, 0, sizeof hints); |
178 memset (&hints, 0, sizeof hints); |
179 hints.ai_family = AF_INET; |
179 hints.ai_family = AF_INET; |
180 |
180 |
181 if (getaddrinfo (node, nullptr, &hints, &lookup) != 0) |
181 if (getaddrinfo (node, nullptr, &hints, &lookup) != 0) |
182 { |
182 { |
184 return IPAddress(); |
184 return IPAddress(); |
185 } |
185 } |
186 |
186 |
187 IPAddress result; |
187 IPAddress result; |
188 assert (lookup != nullptr); |
188 assert (lookup != nullptr); |
189 sockaddr_in* addr = reinterpret_cast<struct sockaddr_in*> (lookup[0].ai_addr); |
189 sockaddr_in* addr = reinterpret_cast<sockaddr_in*> (lookup[0].ai_addr); |
190 result.host = ntohl (addr->sin_addr.s_addr); |
190 result.host = ntohl (addr->sin_addr.s_addr); |
191 result.port = ntohs (addr->sin_port); |
191 result.port = ntohs (addr->sin_port); |
192 freeaddrinfo (lookup); |
192 freeaddrinfo (lookup); |
193 return result; |
193 return result; |
194 } |
194 } |