1
ShadowStar 2014-04-08 16:11:58 +08:00 1
#include <stdio.h>
#include <string.h> #include <arpa/inet.h> int main() { struct in6_addr ip; char *addr1, *addr2, *addr3; addr1 = strdup("2a01:198:603:0::"); addr2 = strdup("2a01:198:603:0:396e:4789:8e99:890f"); addr3 = strdup("2a01::"); inet_pton(AF_INET6, addr1, &ip); printf("0x%x%x%x%x\n", htonl(ip.__u6_addr.__u6_addr32[0]),htonl(ip.__u6_addr.__u6_addr32[1]),htonl(ip.__u6_addr.__u6_addr32[2]),htonl(ip.__u6_addr.__u6_addr32[3])); inet_pton(AF_INET6, addr2, &ip); printf("0x%x%x%x%x\n", htonl(ip.__u6_addr.__u6_addr32[0]),htonl(ip.__u6_addr.__u6_addr32[1]),htonl(ip.__u6_addr.__u6_addr32[2]),htonl(ip.__u6_addr.__u6_addr32[3])); inet_pton(AF_INET6, addr3, &ip); printf("0x%x%x%x%x\n", htonl(ip.__u6_addr.__u6_addr32[0]),htonl(ip.__u6_addr.__u6_addr32[1]),htonl(ip.__u6_addr.__u6_addr32[2]),htonl(ip.__u6_addr.__u6_addr32[3])); return 1; } |
2
samt42 OP V2EX高手云集啊...
不知道是不是内核版本不一样. 我机器上的 in6_addr 结构里里面不是__u6_addr 而是 __in6_u. 所有输出改成了 printf("0x%x%x%x%x\n", htonl(ip.__in6_u.__u6_addr32[0]),htonl(ip.__in6_u.__u6_addr32[1]),htonl(ip.__in6_u.__u6_addr32[2]),htonl(ip.__in6_u.__u6_addr32[3])); |
3
ShadowStar 2014-04-09 13:48:29 +08:00
@samt42 我这个代码的环境是OS X 10.9
|