ネットワーク アプリケーションを開発し、ソケット API を使用しています。
sockaddr_in6構造体のsin6_addrバイトオーダーを設定したい。
16 ビットまたは 32 ビットの変数の場合は、簡単です: htons または htonl を使用する:
// IPv4
sockaddr_in addr;
addr.sin_port = htons(123);
addr.sin_addr.s_addr = htonl(123456);
しかし、128 ビット変数の場合、バイト オーダーをネットワーク バイト オーダーに設定する方法がわかりません。
// IPv6
sockaddr_in6 addr;
addr.sin6_port = htons(123);
addr.sin6_addr.s6_addr = ??? // 16 bytes with network byte order but how to set?
htons を 8 回 (2 * 8 = 16 バイト) 使用するか、htonl を 4 回 (4 * 4 = 16 バイト) 使用するという回答もありますが、どちらが正しいかはわかりません。
ありがとう。