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 にキャストされるとどうなるかは説明されていません。