على جهاز Mac الخاص بك، افحص عنوان استماع الخادم باستخدام lsof، ثم — إذا لزم الأمر — حاول الاتصال بعنوان IP لشبكة Wi-Fi أو Ethernet لجهاز Mac من جهاز آخر على نفس الشبكة. عنوان الاسترجاع (loopback) مثل 127.0.0.1 أو ::1 يكون محلياً فقط؛ بينما العنوان الشامل (wildcard) مثل 0.0.0.0 أو :: يمكنه قبول الاتصالات عبر واجهات الشبكة. تأكد من العنوان الفعلي واختبر المنفذ المحدد قبل تحديد مدى وصول الخادم.
1. العثور على عنوان استماع الخادم
أثناء تشغيل خادم التطوير، افتح تطبيق Terminal وشغّل هذا الأمر، مع استبدال 8000 برقم المنفذ الخاص به:
lsof -nP -iTCP:8000 -sTCP:LISTEN
يسرد lsof الملفات المفتوحة، بما في ذلك مقابس الشبكة (sockets)؛ ويمكن لفلتر حالة TCP الخاص به تحديد المقابس التي تستمع للاتصالات (listeners). تحافظ الخيارات -nP على العناوين بصيغة رقمية وتمنع عرض أرقام المنافذ كأسماء خدمات. دليل lsof من Apple
انظر إلى عمود NAME. النتيجة التي تنتهي بـ 127.0.0.1:8000 (LISTEN) تكون مرتبطة بعنوان استرجاع IPv4. تشير القيمة localhost:8000 أيضاً إلى مستمع استرجاع محلي، على الرغم من أن الاسم المعروض قد يختلف. النتيجة التي تظهر *:8000 تعني مستمعاً شاملاً (wildcard) لعائلة العناوين تلك. تحقق من عمود TYPE أيضاً: فالصفوف المنفصلة لـ IPv4 و IPv6 قد تكون مهمة. يُعد ::1 عنوان استرجاع IPv6؛ و :: هو العنوان الشامل لـ IPv6. في بعض الأنظمة، قد يقبل مستمع IPv6 الشامل اتصالات IPv4 أيضاً، لذا قد لا يحسم السرد وحده هذه التفصيلة.
إذا لم يُرجع الأمر أي شيء، فتحقق من أن الخادم لا يزال قيد التشغيل، وأنك استخدمت المنفذ الحالي، وأنه يستمع عبر بروتوكول TCP. لا يفحص هذا الأمر مستمعي UDP. إذا لم يُظهر lsof أي نتيجة بدون أذونات مرتفعة، فأعد تشغيله باستخدام sudo فقط إذا كنت بحاجة إلى فحص عمليات يملكها حساب آخر؛ قد يطلب macOS كلمة سر تسجيل الدخول الخاصة بك.
2. قراءة العنوان كدليل على إمكانية الوصول
يقبل المستمع المرتبط بعنوان استرجاع محدد الاتصالات الموجهة إلى واجهة الاسترجاع تلك، وليس إلى عنوان LAN لجهاز Mac الخاص بك. العنوان الشامل يعني أن المقبس غير مقيد بـ loopback، وبالتالي قد يمكن الوصول إليه عبر واجهة شبكة. تصف Apple مقبس الاستماع بأنه المقبس الذي ينتظر الاتصالات الواردة. نظرة عامة من Apple حول الخوادم المستندة إلى TCP
لا يُعد العنوان الشامل دليلاً على إمكانية اتصال جهاز آخر. يجب أن يظل الخادم قيد التشغيل على ذلك المنفذ؛ كما يمكن أن تؤثر إعدادات جدار حماية macOS، أو عزل العملاء في الموجه (router) أو Wi-Fi، وظروف الشبكة الأخرى على الاتصال. وعلى العكس من ذلك، فإن اختبار المتصفح الناجح على جهاز Mac باستخدام localhost يثبت فقط أن الاتصال المحلي يعمل.
3. اختبار الوصول من جهاز آخر على شبكتك
ابحث عن عنوان Mac للشبكة التي تريد اختبارها. بالنسبة لشبكة Wi-Fi، توثق Apple العثور على عنوان IP الخاص بالاتصال في إعدادات Wi-Fi أو قائمة حالة Wi-Fi؛ وقد تختلف عناصر التحكم الدقيقة حسب إصدار macOS. دليل إعدادات Wi-Fi من Apple
من جهاز ثانٍ متصل بنفس شبكة LAN، افتح متصفحاً أو استخدم عميل HTTP لطلب http://MAC-IP:8000، مع استبدال عنوان Mac الحالي ومنفذ الخادم. على سبيل المثال، إذا كان عنوان LAN الخاص بجهاز Mac هو 192.168.1.23 والمنفذ هو 8000، فجرّب http://192.168.1.23:8000. تُظهر الاستجابة أن هذا العميل قد وصل إلى الخدمة عبر ذلك المسار؛ أما انتهاء المهلة (timeout) أو رفض الاتصال فلا يحدد، بحد ذاته، السبب. تأكد من وجود كلا الجهازين على الشبكة المقصودة وأعد التحقق من المستمع قبل استكشاف إعدادات جدار الحماية أو الشبكة.
4. جعل الربط المحلي فقط صريحاً عندما يكون ذلك مدعوماً
الإعداد الصحيح يتبع لخادم التطوير، وليس لمفتاح تبديل شامل في macOS. على سبيل المثال، يدعم http.server في Python الخيار --bind؛ وتذكر وثائقه أن الإعداد الافتراضي يرتبط بجميع الواجهات، بينما يرتبط هذا الأمر بعنوان استرجاع IPv4:
python3 -m http.server --bind 127.0.0.1 8000
يعمل هذا إذا كان Python 3 مثبتاً. توثق Python كلاً من خيار الربط وسلوكه الافتراضي. وثائق http.server في Python
توفر الأدوات الأخرى إعدادات المضيف (host) أو الربط الخاصة بها. توثق Node.js أن حذف المضيف من server.listen() يحدد عنواناً غير محدد، مع سلوك يعتمد على توفر IPv6. تحقق من الوثائق الخاصة بخادمك وإصداره؛ ولا تفترض أن خياراً من إطار عمل آخر ينطبق هنا. وثائق net.Server في Node.js بعد تغيير الإعداد، أعد تشغيل الخادم وكرر فحص lsof. يُعد اختبار LAN مفيداً عندما تنوي مشاركة الوصول، لكن الربط بشبكة LAN أو بعنوان شامل يمكن أن يعرض خدمة التطوير لأجهزة أخرى يمكنها الوصول إليها.
المصادر
دليل lsof — Apple Open Source
استخدام المقابس ودفق المقابس (Using Sockets and Socket Streams) — Apple Developer
إعدادات Wi-Fi على Mac — دعم Apple
http.server— خوادم HTTP — مؤسسة برمجيات بايثون (Python Software Foundation)Net | وثائق Node.js v20.20.2 — مؤسسة OpenJS