当前位置: 技术问答>linux和unix
inet_pton的疑问
来源: 互联网 发布时间:2017-04-14
本文导语: 刚接触IPV6,准备把字符串形式的IPV6地址转换为网络字节序的地址,说是用inet_pton,可是用了此函数,编译通过后,怎么每次运行都是不同的值呢? 以下为程序: #include #include #include #include int main(int argc, char *...
刚接触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: %un",addr.s6_addr);
}
}
|
/* 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: %un",addr.s6_addr);
|
打印一个数组的内容,不会?
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。