Как установить порядок байтов sockaddr_in6 :: sin6_addr в сетевой порядок байтов?

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

Спасибо.

10
задан Amir Saniyan 17 May 2011 в 08:08
поделиться