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); } }
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); }
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!