كيفية استرداد عنوان IP وقناع الشبكة الفرعية لجهاز كمبيوتر محلي في لغة C
يعد تحديد عنوان IP للكمبيوتر المحلي وقناع الشبكة الفرعية أمرًا ضروريًا المتطلبات الأساسية لعمليات الشبكة المختلفة. في لغة C، هناك طرق متعددة للحصول على هذه القيم.
يوفر كود Torial حلاً فعالاً لاسترداد كل من عنوان IP وقناع الشبكة الفرعية. إنه يستفيد من وظيفة getifaddrs() للتكرار عبر كافة عناوين واجهة الشبكة المرتبطة بالكمبيوتر المحلي.
إليك نسخة محسنة قليلاً من الكود:
#include#include #include #include int main() { struct ifaddrs *ifaddr; int err; if ((err = getifaddrs(&ifaddr)) != 0) { perror("getifaddrs"); exit(EXIT_FAILURE); } for (struct ifaddrs *ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { if (!ifa->ifa_addr) continue; // Print the IP address if (ifa->ifa_addr->sa_family == AF_INET) { char ip[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr, ip, INET_ADDRSTRLEN); printf("IP: %s\n", ip); } // Print the subnet mask if (ifa->ifa_netmask->sa_family == AF_INET) { char mask[INET_ADDRSTRLEN]; inet_ntop(AF_INET, &((struct sockaddr_in *)ifa->ifa_netmask)->sin_addr, mask, INET_ADDRSTRLEN); printf("Subnet Mask: %s\n", mask); } } freeifaddrs(ifaddr); return 0; }
يضمن هذا الرمز المحدث تحديد عنوان IP وقناع الشبكة الفرعية بشكل صحيح وطباعتهما لكل واجهة شبكة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3