تقنية

ip_network في بايثون: عنوان المضيف ليس عنوان الشبكة

المضيف 9 يُرفض أو يتحول إلى عنوان الشبكة 0
الإدخال نفسه، خياران. [1] [2]

ميّز عنوان المضيف من الشبكة. [1] [2]

الخلاصة السريعة

ip_network() يرفض بتات المضيف افتراضيًا؛ strict=False يصفرها لتحديد الشبكة. [1] [2]

  • 10.0.4.9/24 يرفع ValueError افتراضيًا. [1] [2]
  • مع False نحصل على 10.0.4.0/24؛ تبقى البادئة 24. [1] [2]
  • تعطيل التحقق الصارم لا يقبل عنوانًا غير صالح. [1] [2]
  • 10.0.4.0/24 مقبول في الوضعين. [1] [2]
  • اختبرنا 3.12.14 ومدخل IPv4 نصيًا؛ لا نستنتج اتصالًا فعليًا. [1] [2]

المثال

from ipaddress import ip_network
raw='10.0.4.9/24'
try:
 print(ip_network(raw))
except ValueError:
 print('ValueError')
print(ip_network(raw,
                 strict=False))

[1] [2]

المخرجات: ValueError ثم 10.0.4.0/24. [1] [2]

القناع

في IPv4، /24 يقابل 255.255.255.0. جزء المضيف هنا هو الثمانية بتات الأخيرة؛ تصفيره يغير 9 إلى 0. [1] [2]

العنوان الصحيح

عنوان الشبكة الذي جزء مضيفه صفر لا يحتاج هذا التغيير؛ لذلك يُقبل في الوضعين. [1] [2]

عنوان الشبكة الصحيح مقبول في الوضعين
جزء المضيف صفر. [1] [2]

حدود الخيار

مثلًا، 10.0.4.999/24 يظل مرفوضًا مع False. الخيار يعالج بتات المضيف، لا يصلح كل إدخال. [1] [2]

المراجع

  1. Python: شبكات IPv4
  2. CPython 3.12.14: ipaddress.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.