0
我正在嘗試使用libuv將URL解析爲IP地址。我正在使用功能uv_getaddrinfo
,它將addrinfo
對象傳遞給我的回叫。如何使用libuv執行DNS查找?
這是我回收IP地址的回調嗎?我如何從addrinfo
對象中提取IP地址?
我正在嘗試使用libuv將URL解析爲IP地址。我正在使用功能uv_getaddrinfo
,它將addrinfo
對象傳遞給我的回叫。如何使用libuv執行DNS查找?
這是我回收IP地址的回調嗎?我如何從addrinfo
對象中提取IP地址?
有utility functions適合這個,如uv_ipv4_addr
和uv_ipv4_name
這取決於你想要什麼樣的結構。
許多LibUV函數直接使用addrinfo
,所以它是一個有用的結構。
libuv提供uv_ipv4_name
和uv_ipv6_name
。您選擇的功能取決於你有addrinfo
對象:
if (addrinfo.ai_family == AF_INET) {
// ipv4
char c[17] = { '\0' };
uv_ip4_name((sockaddr_in*)(addrinfo.ai_addr), c, 16);
std::cout << c << std::endl;
} else if (addrinfo.ai_family == AF_INET6) {
// ipv6
char c[40] = { '\0' };
uv_ip6_name((sockaddr_in6*)(addrinfo.ai_addr), c, 39);
std::cout << c << std::endl;
}
你可以從uv_getaddrinfo
得到multple addrinfo
結構。這些存儲在一個單鏈表中,其中「下一個」指針是addrinfo.ai_next
。
這也是有幫助的:What is the difference between struct addrinfo and struct sockaddr
由於這是C它不是一個真正的「對象」,而是一個「結構」。這種差異似乎看起來很有學術價值,但從編程的角度來看這很重要。 – tadman