it-swarm.dev

باستخدام request.getRemoteAddr () بإرجاع 0: 0: 0: 0: 0: 0: 1: 1

أحاول طباعة عنوان IP الخاص بالمستخدم المسجل في تطبيق الويب الخاص بي. إذا كان المستخدم يتصل بجهاز كمبيوتر آخر (يوجد تحت نفس الشبكة ، حيث يتم تشغيل تطبيق الويب في جهاز الكمبيوتر الخاص بي) باستخدام عنوان IP 192.168.10.120:8080/WebApplication الرمز request.getRemoteAddr() أو request.getLocalAddr()) إرجاع عنوان IP الخاص به. عندما أقوم بتسجيل الدخول من جهاز الكمبيوتر الخاص بي الذي يقوم بتشغيل تطبيق الويب ، أحصل على عنوان IP هذا: 0: 0: 0: 0: 0: 0: 1.

لماذا هذا؟ وما الفرق بين هذه الأوامر (والتي يجب علي استخدامها؟). شكراً جزيلاً لك!

43
yaylitzis

في حالتك ، حيث تحاول الوصول إليها على جهازك المحلي ، فسوف تُرجع هذه القيمة. لكن اسمح لأحد أصدقائك بالوصول إليه ، وستتلقى النتيجة المتوقعة بـ getRemoteAddr

من javadoc:

getRemoteAddr - إرجاع عنوان IP للعميل أو الوكيل الأخير الذي أرسل الطلب

getLocalAddr - إرجاع عنوان IP للواجهة التي تم استلام الطلب عليها.

47
Abubakkar

بينما ننتقل إلى IPv6 من IPv4 ، فإنهم يغيرون عنوان الاسترجاع (مضيف محلي) إلى 0:0:0:0:0:0:0:1 من 127.0.0.1 وهذا هو سبب حصولك على هذا العنوان.

بالنسبة للوظائف:

  • getRemoteAddr() تقوم بإرجاع IP للعملاء

  • getLocalAddr() تُرجع IP الخاص بالخادم الذي يعمل عليه التطبيق

41
Robert Pounder

getRemoteAddr () يحل الغرض الخاص بك ولكن إذا كان العميل وراء أي وكيل ، فستحصل على عنوان IP الخاص بالوكالة:

إرجاع عنوان بروتوكول الإنترنت (IP) للعميل أو الوكيل الأخير الذي أرسل الطلب.

getLocalAddr () تُرجع IP الخاص بالخادم الذي يعمل عليه التطبيق.

6
Ankur Lathi