IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Adresse IP de la machine


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut Adresse IP de la machine
    Salut a tous, voila j'ai voulu savoir est ce qu'il y a une fonction en C++ par quoi je peux savoir l'adresse IP de la machine??

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    En C++ standard? Non.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Citation Envoyé par Goten Voir le message
    En C++ standard? Non.
    Oui standard je boss en MFC de Visual C++ 2008 SP2

  4. #4
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Bas non en C++ standard ça existe pas... Par contre avec du win32 j'ai pu trouvé ça sur le mdsn :
    http://msdn.microsoft.com/en-us/libr...49(VS.85).aspx

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Citation Envoyé par Goten Voir le message
    Bas non en C++ standard ça existe pas... Par contre avec du win32 j'ai pu trouvé ça sur le mdsn :
    http://msdn.microsoft.com/en-us/libr...49(VS.85).aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    #include <winsock2.h>
    #include <ws2tcpip.h>
    #include <iphlpapi.h>
    #include <stdio.h>
     
    #define MALLOC(x) HeapAlloc(GetProcessHeap(), 0, (x))
    #define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
    /* Note: could also use malloc() and free() */
     
    int __cdecl main()
    {
     
        int i;
     
        /* Variables used by GetIpAddrTable */
        PMIB_IPADDRTABLE pIPAddrTable;
        DWORD dwSize = 0;
        DWORD dwRetVal = 0;
        IN_ADDR IPAddr;
     
        /* Variables used to return error message */
        LPVOID lpMsgBuf;
     
        // Before calling AddIPAddress we use GetIpAddrTable to get
        // an adapter to which we can add the IP.
        pIPAddrTable = (MIB_IPADDRTABLE *) MALLOC(sizeof (MIB_IPADDRTABLE));
     
        if (pIPAddrTable) {
            // Make an initial call to GetIpAddrTable to get the
            // necessary size into the dwSize variable
            if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) ==
                ERROR_INSUFFICIENT_BUFFER) {
                FREE(pIPAddrTable);
                pIPAddrTable = (MIB_IPADDRTABLE *) MALLOC(dwSize);
     
            }
            if (pIPAddrTable == NULL) {
                printf("Memory allocation failed for GetIpAddrTable\n");
                exit(1);
            }
        }
        // Make a second call to GetIpAddrTable to get the
        // actual data we want
        if ( (dwRetVal = GetIpAddrTable( pIPAddrTable, &dwSize, 0 )) != NO_ERROR ) { 
            printf("GetIpAddrTable failed with error %d\n", dwRetVal);
            if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwRetVal, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),       // Default language
                              (LPTSTR) & lpMsgBuf, 0, NULL)) {
                printf("\tError: %s", lpMsgBuf);
                LocalFree(lpMsgBuf);
            }
            exit(1);
        }
     
        printf("\tNum Entries: %ld\n", pIPAddrTable->dwNumEntries);
        for (i=0; i < (int) pIPAddrTable->dwNumEntries; i++) {
            printf("\n\tInterface Index[%d]:\t%ld\n", i, pIPAddrTable->table[i].dwIndex);
            IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwAddr;
            printf("\tIP Address[%d]:     \t%s\n", i, inet_ntoa(IPAddr) );
            IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwMask;
            printf("\tSubnet Mask[%d]:    \t%s\n", i, inet_ntoa(IPAddr) );
            IPAddr.S_un.S_addr = (u_long) pIPAddrTable->table[i].dwBCastAddr;
            printf("\tBroadCast[%d]:      \t%s (%ld%)\n", i, inet_ntoa(IPAddr), pIPAddrTable->table[i].dwBCastAddr);
            printf("\tReassembly size[%d]:\t%ld\n", i, pIPAddrTable->table[i].dwReasmSize);
            printf("\tType and State[%d]:", i);
            if (pIPAddrTable->table[i].wType & MIB_IPADDR_PRIMARY)
                printf("\tPrimary IP Address");
            if (pIPAddrTable->table[i].wType & MIB_IPADDR_DYNAMIC)
                printf("\tDynamic IP Address");
            if (pIPAddrTable->table[i].wType & MIB_IPADDR_DISCONNECTED)
                printf("\tAddress is on disconnected interface");
            if (pIPAddrTable->table[i].wType & MIB_IPADDR_DELETED)
                printf("\tAddress is being deleted");
            if (pIPAddrTable->table[i].wType & MIB_IPADDR_TRANSIENT)
                printf("\tTransient address");
            printf("\n");
        }
     
        if (pIPAddrTable) {
            FREE(pIPAddrTable);
            pIPAddrTable = NULL;
        }
     
        exit(0);
    }
    J'ai rien comprit dans ce code

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Sachant qu'on est en ... 2009
    Je te conseille d'utiliser plutot GetAdaptersAddresses qui a l'avantage de savoir retourner les addresses IPv6 (éspérons qu'IPv4 disparaisse vite !!!!)

    L'utilisation est similaire à GetIPAddresses, on fait un premier appel pour connaitre la taille mémoire du buffer nécessaire...
    On alloue le buffer, et on rappelle la fonction avec ce buffer et cette taille.
    Et ensuite on utilise les données ainsi collectées.

    A noter que cette derniere fonction permet de 'skipper' les addresses multicast et autres...

Discussions similaires

  1. [Système] Récupérer l'adresse MAC de la machine
    Par la.musaraigne dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 27/01/2011, 14h08
  2. Récupérer l'adresse IP de la machine
    Par xterminhate dans le forum C++
    Réponses: 6
    Dernier message: 13/06/2005, 07h26
  3. [Ada 95] Récupérer l'adresse MAC de la machine
    Par kindool dans le forum Ada
    Réponses: 3
    Dernier message: 26/05/2005, 15h49
  4. [Info] obtenir l'adresse MAC d'une machine
    Par bigboomshakala dans le forum C++
    Réponses: 3
    Dernier message: 27/02/2005, 17h07
  5. Adresse publique d'une machine du L.A.N. ?
    Par WOLO Laurent dans le forum Développement
    Réponses: 4
    Dernier message: 30/11/2003, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo