#pragma once #include #include #include struct addrinfo; namespace net { // Strictly only required on Win32, but all platforms should call it. void Init(); void Shutdown(); enum class DNSType { ANY = 0, IPV4 = 1, IPV6 = 2, }; bool HostPortExists(const std::string &host, int port, int timeout_ms); bool DNSResolve(const std::string &host, const std::string &service, addrinfo **res, std::string &error, DNSType type = DNSType::ANY); void DNSResolveFree(addrinfo *res); bool GetLocalIP4List(std::vector& IP4s); int inet_pton(int af, const char* src, void* dst); // Does a DNS lookup without involving the OS, so you can hit any DNS server. bool DirectDNSLookupIPV4(const char *dnsServer, const char *host, uint32_t *ipv4_addr); } // namespace net