"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية الحصول على عنوان IP للكمبيوتر المحلي وقناع الشبكة الفرعية في C++؟

كيفية الحصول على عنوان IP للكمبيوتر المحلي وقناع الشبكة الفرعية في C++؟

تم النشر بتاريخ 2024-11-15
تصفح:332

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

كيفية استرداد عنوان 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