Bagaimana untuk Mendapatkan Alamat IP dan Subnet Mask Komputer Tempatan dalam C ?

Susan Sarandon
Lepaskan: 2024-11-10 03:34:02
asal
321 orang telah melayarinya

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

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);
    }
}
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan