quelles sont les adresses de type in_addr_t inet_ntoa etc
Ok avant de poster cette question, j'ai vérifié les discussions ici
in_addr_t à chaîne
ma question est différente.
Je comprends que inet_ntoa fonction est du type suivant
char * inet_ntoa (struct in_addr in);
Ce que je veux savoir, c'est ce qui est in_addr_t
quelle sera la représentation lorsqu'il est utilisé dans une prise de programme.
J'ai vérifié la définition de la structure dans <netinet/in.h>
typedef uint32_t in_addr_t;
struct in_addr {
in_addr_t s_addr;
};
est de type ci-dessus. Je ne veux pas imprimer in_addr_t char * inet_ntoa.
Je veux voir ce qu'est in_addr_t.Alors, comment peut-il être fait ou ce qui est exactement in_addr_t et pourquoi est-il utilisé encore et encore dans le support de la programmation.
Si je ne me trompe pas il est défini comme
typedef uint32_t in_addr_t;
Donc si in_addr_t
est unsigned 32 bit
int je veux voir ce qui est, et non les char *
qui imprime 192.168.1.1 type de sortie sur la sortie standard stdout.
OriginalL'auteur Registered User | 2011-06-30
Vous devez vous connecter pour publier un commentaire.
Comme nous le savons tous (nous, pas vrai?) un
IPv4
adresse est représentée par un entier non signé de 32 bits. Nous chétif, les humains ne sont pas si bon avec un grand nombre (ou petits) donc nous utilisons le point de la notation décimale. (Saviez-vous que vous êtes à1076000524
maintenant ? Ni a-t-I).Cependant, depuis que vous avez creusé à travers
netinet
et a découvert ce qui est clairement spécifié par la normeQui est
vous pouvez l'imprimer.
Rapide, ce qui ne
134744072
?L'utilisateur C'est vrai 🙂
Vous ne précisez pas la chose la plus importante - l'ordre des octets. Tout le reste est évident.
Pouvez-vous développer ?
Ordre des octets de réseau est big-endian. Vous devez utiliser utilisation des fonctions comme
htons
/htonl
("l'hôte de réseau, court/long") ountohs
/ntohl
("réseau de l'hôte, court/long) afin d'obtenir les valeurs correctes indépendamment de l'architecture.OriginalL'auteur cnicutar