Libreria per socket - struttura sockaddr_in

di il
1 risposte

Libreria per socket - struttura sockaddr_in

Data la seguente struttura dati di libreria dove memorizzare i dati del socket

#include <sys/socket.h>
#include <netinet/in.h>
struct sockaddr_in {
 sa_family_t    sin_family; 
 in_port_t      sin_port;       /* network order */
 struct in_addr sin_addr;
};

struct in_addr {
 uint32_t s_addr;               /* network order */
};

Non capisco come mai il campo sin_addr, che ospita l'indirizzo ip, è a sua volta una struttura, perchè? 

Non era più semplice dichiare la struttura datti come segue ? Mi sfugge la motivazione.


struct sockaddr_in {
 sa_family_t    sin_family; 
 in_port_t      sin_port;       /* network order */
 uint32_t       s_addr; 
};

1 Risposte

  • Re: Libreria per socket - struttura sockaddr_in

    Provo a ipotizzare. Sarà per seguire il principio di inversione delle dipendenze. Ovvero il modulo di alto livello fornisce un'interfaccia (in questo caso la struct), che poi verrà implementata da un modulo di basso livello. In questo modo la struct non dipende dalla specifica implementazione dell'ip.

Devi accedere o registrarti per scrivere nel forum
1 risposte