0
我需要一個可以與IP4和IP6地址一起工作的函數,我需要將地址從它的字符串表示形式(IP4)或十六進制表示形式(IP6)轉換爲它的長整型值。當前的代碼我已經是:如何將IP4和IP6地址轉換爲C中的長整型值?
struct addrinfo *addr;
// This converts an char* ip_address to an addrinfo, so now I know whether
// it's a IP4 or IP6 address
int result = getaddrinfo(ip_address, NULL, NULL, &addr);
if (result ==0) {
struct in_addr dst;
result = inet_pton(addr->ai_family, ip_address, &dst);
long ip_value = dst->s_addr;
freeaddrinfo(addr);
return ip_value;
}
我也弄了半天,從dst-> s_addr但我敢肯定,這是不正確。任何關於如何解決這個問題的指針都非常感謝!
嗨,非常感謝您的幫助!當你說我的inet_pton調用錯誤時,你的意思是getaddrinfo調用?關於IP6,是的,它應該是128位,我知道我們需要這個,所以我寧願現在修復它....我是否還需要修復inet_pton調用? – DrDee 2012-02-17 23:05:03
@DrDee對不起,我誤解了這個問題。你的'inet_pton'電話實際上幾乎是正確的,我編輯了我的答案。 – cnicutar 2012-02-17 23:06:45
buf中的值始終爲140734799738144(我想這就是sizeof struct in6_addr)。對不起,不斷詢問,但我如何從這裏得到IP地址的'長'表示? – DrDee 2012-02-17 23:32:29