Я разрабатываю сетевое приложение и использую API сокетов.
Я хочу установить порядок байтов sin6_addr в структуре sockaddr_in6.
Для 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 байт), но я не знаю, какой из них правильный.
Спасибо.