我正在开发一个网络应用程序并使用套接字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 字节),但我不知道哪种方式是正确的。
谢谢。