Maison > développement back-end > C++ > le corps du texte

Comment obtenir l'adresse IP et le masque de sous-réseau de l'ordinateur local en C ?

Susan Sarandon
Libérer: 2024-11-10 03:34:02
original
324 Les gens l'ont consulté

How to Get the Local Computer's IP Address and Subnet Mask in C  ?

Détermination de l'adresse IP et du masque de sous-réseau de l'ordinateur local en C

L'acquisition de l'adresse IP et du masque de sous-réseau de l'ordinateur local est essentielle pour diverses opérations de mise en réseau. En C , ce processus peut être accompli en tirant parti des appels système spécifiques à la plate-forme.

1. Unix/MacOS

Pour les systèmes Unix et macOS, la fonction getifaddrs permet de récupérer une liste chaînée d'adresses d'interface réseau. Parcourir cette liste permet d'accéder à l'adresse IP, au masque de sous-réseau et à d'autres informations connexes de chaque interface :

#include <sys/types.h>
#include <ifaddrs.h>

struct ifaddrs *ifaddr;
int s;

if ((s = getifaddrs(&ifaddr)) == -1) {
    // Error handling
}

for (struct ifaddrs *ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
    if (ifa->ifa_addr->sa_family == AF_INET) {
        char addr[INET_ADDRSTRLEN];
        inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr, addr, INET_ADDRSTRLEN);
        printf("IP Address: %s\n", addr);

        char netmask[INET_ADDRSTRLEN];
        inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr, netmask, INET_ADDRSTRLEN);
        printf("Subnet Mask: %s\n", netmask);
    }
}
Copier après la connexion

2. Windows

Pour les systèmes Windows, la fonction GetAdaptersAddresses fournit une fonctionnalité similaire. Cette fonction remplit un tampon avec des informations pour toutes les cartes réseau de l'ordinateur local :

#include <iphlpapi.h>

PIP_ADAPTER_ADDRESSES addresses;
ULONG outBufLen = 0;
DWORD res = GetAdaptersAddresses(AF_INET, 0, NULL, addresses, &outBufLen);

if (res != ERROR_SUCCESS) {
    // Error handling
}

for (PIP_ADAPTER_ADDRESSES adapter = addresses; adapter != NULL; adapter = adapter->Next) {
    char ip[MAX_PATH + 1];
    InetNtopA(AF_INET, &adapter->FirstUnicastAddress->Address.Ipv4.sin_addr, ip, MAX_PATH + 1);
    printf("IP Address: %s\n", ip);

    char netmask[MAX_PATH + 1];
    InetNtopA(AF_INET, &adapter->FirstUnicastAddress->NetMask.Ipv4.sin_addr, netmask, MAX_PATH + 1);
    printf("Subnet Mask: %s\n", netmask);
}
Copier après la connexion

En suivant ces étapes, vous pouvez récupérer à la fois l'adresse IP et le masque de sous-réseau de l'ordinateur local en C , vous permettant de établir des connexions réseau et effectuer efficacement diverses opérations de communication.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal