Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menentukan Alamat IP Pelayan Linux secara Pengaturcaraan dalam C?
Mengenal pasti alamat IP pelayan Linux adalah penting untuk komunikasi rangkaian dan penggunaan aplikasi. Artikel ini membentangkan penyelesaian terprogram dalam C untuk mendapatkan semula alamat IP mesin Linux dengan berkesan.
Objektifnya adalah untuk mendapatkan alamat IP pelayan Linux secara pemrograman dalam aplikasi C . Pelayan mungkin mempunyai berbilang alamat IP, termasuk alamat localhost, alamat dalaman (pengurusan) dan alamat luaran (awam). Matlamatnya ialah untuk mendapatkan semula alamat IP luaran untuk pengikatan aplikasi.
Pustaka C standard menyediakan fungsi getifaddrs() untuk mendapatkan maklumat tentang antara muka rangkaian dan alamat IP sistem. Berikut ialah contoh yang menggunakan getifaddrs() untuk mencetak semua alamat IPv4 dan IPv6 mesin tempatan:
#include <stdio.h> #include <sys/types.h> #include <ifaddrs.h> int main() { struct ifaddrs *ifAddrStruct = NULL; struct ifaddrs *ifa = NULL; void *tmpAddrPtr = NULL; getifaddrs(&ifAddrStruct); for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) { if (!ifa->ifa_addr) { continue; } if (ifa->ifa_addr->sa_family == AF_INET) { // IPv4 address tmpAddrPtr = &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr; char addressBuffer[INET_ADDRSTRLEN]; inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN); printf("IPv4 Address %s\n", addressBuffer); } else if (ifa->ifa_addr->sa_family == AF_INET6) { // IPv6 address tmpAddrPtr = &((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr; char addressBuffer[INET6_ADDRSTRLEN]; inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN); printf("IPv6 Address %s\n", addressBuffer); } } if (ifAddrStruct != NULL) { freeifaddrs(ifAddrStruct); } return 0; }
Untuk mendapatkan semula alamat IP luaran, anda boleh menggunakan pendekatan yang serupa tetapi secara khusus mencari antara muka yang menghubungkan kepada rangkaian luaran. Anda boleh menggunakan siocgifaddr dengan SIOCGIFADDR untuk mendapatkan semula alamat IP antara muka tertentu.
Fungsi getifaddrs() dan siocgifaddr dengan SIOCGIFADDR menyediakan kaedah yang mantap untuk mendapatkan semula alamat IP mesin Linux dalam C . Pendekatan ini membolehkan aplikasi menyesuaikan diri secara dinamik kepada perubahan rangkaian dan mewujudkan sambungan rangkaian yang diperlukan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Alamat IP Pelayan Linux secara Pengaturcaraan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!