我正在阅读 Beej 的指南,他谈到程序员创建的不同结构。
他说我们可以将 sockaddr_storage/in6/in 传递给addrinfo,并且它会被转换为 sockaddr,
但是如何做到的呢?sockaddr 是16字节,而 sockaddr_in6 是28字节。
我读了 RFC 3493 的一小部分:
注意,sockaddr_in6 结构通常比一般的 sockaddr 结构要大。在许多现有的实现中,sizeof(struct sockaddr_in) 等于 sizeof(struct sockaddr),两者都是16字节。在将现有代码转换为IPv6时,需要仔细检查这种假设。
但它并没有解释当 sockaddr_in6 转换为 sockaddr 时会发生什么。
我读了 RFC 3493 的一小部分:
注意,sockaddr_in6 结构通常比一般的 sockaddr 结构要大。在许多现有的实现中,sizeof(struct sockaddr_in) 等于 sizeof(struct sockaddr),两者都是16字节。在将现有代码转换为IPv6时,需要仔细检查这种假设。
但它并没有解释当 sockaddr_in6 转换为 sockaddr 时会发生什么。
sockaddr
指针只是因为它们自从创建以来一直如此。 - Some programmer dude