3 This file is part of libmspnet
4 Copyright © 2008, 2011 Mikkosoft Productions, Mikko Rasa
5 Distributed under the LGPL
9 #define _WIN32_WINNT 0x0501
14 #include <msp/strings/formatter.h>
23 SockAddr *resolve(const string &s, Family family)
28 unsigned bracket = s.find(']');
29 host = s.substr(1, bracket-1);
30 unsigned colon = s.find(':', bracket);
31 if(colon!=string::npos)
32 serv = s.substr(colon+1);
36 unsigned colon = s.find(':');
37 if(colon!=string::npos)
39 host = s.substr(0, colon);
40 serv = s.substr(colon+1);
46 addrinfo hints={0, family, 0, 0, 0, 0, 0, 0};
48 const char *chost=(host.empty() ? 0 : host.c_str());
49 const char *cserv=(serv.empty() ? 0 : serv.c_str());
50 int err=getaddrinfo(chost, cserv, &hints, &res);
53 SockAddr *addr=SockAddr::create(*res->ai_addr);
59 throw Exception(format("Can't resolve '%s': %d", host, err));
61 throw Exception(format("Can't resolve '%s': %s", host, gai_strerror(err)));
66 unsigned size=fill_sockaddr(sa);
69 int err=getnameinfo(&sa, size, hst, 128, srv, 128, 0);