使用inet_pton将计算出的网络地址存储在''struct in6_addr''或“struct in6_addr.sin6_addr”中

时间:2011-08-01 17:59:40

标签: c linux tcp ubuntu-10.04

将文本主机地址转换为数字地址

int inet_pton( int af, const char * src, void * dst );

我已经看到了这个功能的两种不同用法如下:

示例1:

http://man7.org/tlpi/code/online/book/sockets/i6d_ucase_cl.c.html

struct sockaddr_in6 svaddr;
...
inet_pton(AF_INET6, argv[1], &svaddr.sin6_addr)

示例2:

http://www.qnx.com/developers/docs/6.4.1/neutrino/lib_ref/i/inet_pton.html

struct in6_addr in6addr;
...
inet_pton(AF_INET6, IN6ADDR, &in6addr))

哪一个是正确的?如果所有这些都是正确的,为什么每个人都将转换后的网络地址存储到完全不同的数据结构中?

1 个答案:

答案 0 :(得分:1)

结构相同:svaddr.sin6_addr的类型为struct in6_addr

netinet/in.h

  

标题应定义sockaddr_in6结构,   至少应包括以下成员:

...
struct in6_addr  sin6_addr      IPv6 address.

事实上,任何有足够大小的东西都可以,inet_pton是:

int inet_pton(int af, const char *restrict src, void *restrict dst);
                                                ^ anything