tipos - ¿Cuál es la necesidad de una estructura de direcciones separada en sockaddr_in?
tipos de estructuras organizacionales pdf (1)
Esta es la estructura de la dirección del socket de internet (IPv4) definida en netinet / in.h
struct sockaddr_in {
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct in_addr {
in_addr_t s_addr;
};
Aquí cuál es la necesidad de una estructura separada solo para el campo de dirección.
¿Por qué no podemos usar la siguiente estructura?
struct sockaddr_in {
uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;
in_addr_t sin_addr;
char sin_zero[8];
};
Es por razones históricas. En los primeros días de la programación de socket, struct in_addr
contenía una union
de varias estructuras para que pudiera obtener los bytes individuales. Esta union
volvió innecesaria cuando aparecieron las subredes y el direccionamiento sin clases, pero cambiar la struct
por una simple unsigned long
rompería una gran cantidad de código, por lo que se mantuvo así.
Si está interesado en la programación de la red y aún no ha recogido una copia de la Programación de Red UNIX , le recomiendo que lo haga, es una mina de oro para pequeños detalles como este.