Desarrollo de una aplicación de red y uso de API de socket.Cómo establecer el orden de byte sockaddr_in6 :: sin6_addr en orden de bytes de red?
Quiero establecer el orden de byte sin6_addr de la estructura sockaddr_in6.
Durante 16 bits o 32 variables de bits, es simple: El uso de htons o htonl:
// IPv4
sockaddr_in addr;
addr.sin_port = htons(123);
addr.sin_addr.s_addr = htonl(123456);
Pero para las variables de 128 bits, que no saben cómo establecer el orden de bytes de red orden de bytes:
// IPv6
sockaddr_in6 addr;
addr.sin6_port = htons(123);
addr.sin6_addr.s6_addr = ??? // 16 bytes with network byte order but how to set?
Algunas respuestas pueden estar usando htons por 8 veces (2 * 8 = 16 bytes), o usando htonl por 4 veces (4 * 4 = 16 bytes), pero no sé cuál es la correcta.
Gracias.
sinceramente, desarrollar una biblioteca. Existen algunas limitaciones para acceder al nombre de host. –
@Amir Saniyan ¿Qué limitaciones? Toda la Internet usa nombres de host en lugar de direcciones IP, y delega estos a una base de datos llamada DNS. ¿Qué hay de diferente en tu situación? En cualquier caso, todo lo que tiene que hacer es almacenar la dirección IP en octetos, es decir, bytes, en el mismo orden en que los escribiría, y el trabajo hecho. – EJP