Menentukan Alamat IP dan Subnet Mask Komputer Tempatan dalam C
Memperoleh alamat IP dan subnet mask komputer tempatan adalah penting untuk pelbagai operasi rangkaian. Dalam C , proses ini boleh dicapai dengan memanfaatkan panggilan sistem khusus platform.
1. Unix/MacOS
Untuk sistem Unix dan macOS, fungsi getifaddrs membenarkan mendapatkan semula senarai terpaut alamat antara muka rangkaian. Lelaran melalui senarai ini menyediakan akses kepada setiap alamat IP antara muka, topeng subnet dan maklumat lain yang berkaitan:
#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
Untuk sistem Windows, fungsi GetAdaptersAddresses menyediakan fungsi yang serupa. Fungsi ini mengisi penimbal dengan maklumat untuk semua penyesuai rangkaian pada komputer setempat:
#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); }
Dengan mengikuti langkah ini, anda boleh mendapatkan kedua-dua alamat IP dan subnet mask untuk komputer tempatan dalam C , membolehkan anda untuk mewujudkan sambungan rangkaian dan melaksanakan pelbagai operasi komunikasi dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Alamat IP dan Subnet Mask Komputer Tempatan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!