将文本主机地址转换为数字地址
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))
哪一个是正确的?如果所有这些都是正确的,为什么每个人都将转换后的网络地址存储到完全不同的数据结构中?
答案 0 :(得分:1)
结构相同:svaddr.sin6_addr
的类型为struct in6_addr
。
标题应定义sockaddr_in6结构, 至少应包括以下成员:
... struct in6_addr sin6_addr IPv6 address.
事实上,任何有足够大小的东西都可以,inet_pton
是:
int inet_pton(int af, const char *restrict src, void *restrict dst);
^ anything