Sturcture in_addr

Résolu
Bonjour,

En unix la structure in_addr a la configuration suivante

typedef struct in_addr
{
union
{
struct
{
u_char s_b1, s_b2, s_b3, s_b4;
} S_un_b;

struct
{
u_short s_w1, s_w2;
} S_un_w;

u_long S_addr;
} S_un
} IN_ADDR;

Lorsque je compile avec gcc sous Ubuntu, j'obtiens une erreur : in_addr has no member named S_un.
La structure a-t-elle changé de format ?

Quelqu'un a-t-il une réponse à ce problème.

Merci d'avance

2 réponses

  1. merci pour le tuyau. Effectivement je travaille sur une conversion de SunOs vers Linux.
    Bonne journée.
    1. Contributeur
      Salut, un petit tout sur LXR et on apprends que
      in_addr
      n'existe que depuis Linux 3.7 et est définie par
      struct in_addr {
      
      __be32 s_addr;
      };
      __be32
      est l'équivalent de
      unsigned int32_t
      , utilisé pour les addresses IPv4.
      La définition que du donnes vient de chez Microsoft (winsock) ou de chez d'autres UNIX propriétaires (OpenVMS d'HP) et ils ne respectent pas le standard BSD 4.3 (que Linux suit) qui définit
      in_addr
      comme ci-dessus.
      T'es donc mal parti. Quand on code pour Linux, on code pour Linux, pas pour Windows. Un coup de
      man inet_addr
      t'en dira grand sur comment utiliser ces fonctions et structures.
      from human import idiocy
      del idiocy