parent
							
								
									66483a3838
								
							
						
					
					
						commit
						0570a7ce7b
					
				
				 9 changed files with 88 additions and 29 deletions
			
			
		| @ -0,0 +1,40 @@ | ||||
| #include <bakanet/core/dns_lookup.h> | ||||
| 
 | ||||
| namespace Bk::Net { | ||||
| 	std::vector<std::string> dns_lookup(const std::string& host_name, IpVersion ipv) | ||||
| 	{ | ||||
| 		std::vector<std::string> output; | ||||
| 		struct addrinfo hints, *res, *p; | ||||
| 		char ip_address[INET6_ADDRSTRLEN]; | ||||
| 		memset(&hints, 0, sizeof hints); | ||||
| 		hints.ai_family = (int)ipv; | ||||
| 		hints.ai_socktype = SOCK_STREAM; | ||||
| 
 | ||||
| 		if (getaddrinfo(host_name.c_str(), NULL, &hints, &res) != 0) | ||||
| 		{ | ||||
| 			output.push_back(""); | ||||
| 			return output; | ||||
| 		} | ||||
| 
 | ||||
| 		for (p = res;p != NULL; p = p->ai_next) | ||||
| 		{ | ||||
| 			void* addr; | ||||
| 			if (p->ai_family == AF_INET) | ||||
| 			{ | ||||
| 				struct sockaddr_in* ipv4 = (struct sockaddr_in*)p->ai_addr; | ||||
| 				addr = &(ipv4->sin_addr); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				struct sockaddr_in6* ipv6 = (struct sockaddr_in6*)p->ai_addr; | ||||
| 				addr = &(ipv6->sin6_addr); | ||||
| 			} | ||||
| 			inet_ntop(p->ai_family, addr, ip_address, sizeof ip_address); | ||||
| 			output.push_back(ip_address); | ||||
| 		} | ||||
| 
 | ||||
| 		freeaddrinfo(res); // free the linked list
 | ||||
| 
 | ||||
| 		return output; | ||||
| 	} | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue