getaddrinfo 是POSIX定义的通用函数,该函数可以在 Windows、MacOS X、Linux、Android 等平台正确编译且工作。
getaddrinfo 函数的作用为:解释域/IP的地址信息,可简易理解为DNS解析函数。
static IPEndPoint Ipep_GetEndPointWithNative(const ppp::string& host, int port) noexcept {
struct addrinfo req, * hints, * p;
memset(&req, 0, sizeof(req));
req.ai_family = AF_UNSPEC;
req.ai_socktype = SOCK_STREAM;
if (getaddrinfo(host.data(), NULL, &req, &hints)) {
return IPEndPoint(IPEndPoint::AnyAddress, port);
}
for (p = hints; NULL != p; p = p->ai_next) {
if (p->ai_family == AF_INET) {
struct sockaddr_in* ipv4 = (struct sockaddr_in*)p->ai_addr;
return IPEndPoint(AddressFamily::InterNetwork,
(Byte*)&(ipv4->sin_addr), sizeof(ipv4->sin_