首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

inet_pton的疑点

2013-06-25 
inet_pton的疑问刚接触IPV6,准备把字符串形式的IPV6地址转换为网络字节序的地址,说是用inet_pton,可是用了

inet_pton的疑问
刚接触IPV6,准备把字符串形式的IPV6地址转换为网络字节序的地址,说是用inet_pton,可是用了此函数,编译通过后,怎么每次运行都是不同的值呢?
以下为程序:


#include
#include
#include
#include

int   main(int argc, char **argv)
{
        char ip[] = "ff3f:2345:1234::1234";
        struct in6_addr addr;

        int ret = inet_pton(AF_INET6, ip, (void *)&addr);   //IP字符串 ——》网络字节流
        if(0 == ret)
        {
                printf("inet_pton error, return! \n");
                return -1;
        }
        else
        {
                printf("inet_pton ip: %u\n",addr.s6_addr);
        }


}
IPv6 C 网络
[解决办法]
/* IPv6 address */
struct in6_addr
  {
    union
      {
uint8_t__u6_addr8[16];
#if defined __USE_MISC 
[解决办法]
 defined __USE_GNU
uint16_t __u6_addr16[8];
uint32_t __u6_addr32[4];
#endif
      } __in6_u;
#define s6_addr__in6_u.__u6_addr8
#if defined __USE_MISC 
[解决办法]
 defined __USE_GNU
# define s6_addr16__in6_u.__u6_addr16
# define s6_addr32__in6_u.__u6_addr32
#endif
  };

// 这里打印的是数组uint8_t __u6_addr8[16]的首地址,当然每次运行都是不同的值了
printf("inet_pton ip: %u\n",addr.s6_addr);

[解决办法]
引用:
怎么样才能把转换后的地址打印出来呢?


打印一个数组的内容,不会?

热点排行