خالد مرتضى نشر 2 ديسمبر 2021 أرسل تقرير نشر 2 ديسمبر 2021 أحاول الحصول على الip address في socket io باستخدام الدالة socket.handshake.address ولكن يعطيني دائمًا رقم ::1 ما الحل 1 اقتباس
0 Wael Aljamal نشر 4 ديسمبر 2021 أرسل تقرير نشر 4 ديسمبر 2021 إن أردت عرض IPv4 عليك استخدام عنوان انترنت المخدم server_ip حسب الشيفرة: var socket = io('http://server_ip:8000', { transports: ['websocket']}); سيعيد عنوان مركب بالشكل التالي: ::ffff:ipv4address يمكن قراءة ipv4address منه. مثال: ::ffff:127.0.0.1 أما في الشيفرة لديك، فأنت تطبق localhost عند العميل، فلا يعيد عنوان المخدم var socket = io('http://localhost:8000', { transports: ['websocket']}); ^^^^^^^^^^^^^ وتأكد من قراءة الغرض بهذه الخواص: socket.request.connection.remoteAddress ::ffff:127.0.0.1 socket.conn.remoteAddress ::ffff:127.0.0.1 socket.conn.transport.socket._socket.remoteAddress ::ffff:127.0.0.1 وفي المخدم: var ip = socket.handshake.headers["x-real-ip"]; var port = socket.handshake.headers["x-real-port"]; اقتباس
0 شرف الدين حفني نشر 2 ديسمبر 2021 أرسل تقرير نشر 2 ديسمبر 2021 دالة socket.handshake.address تقوم بإرجاع العنوان من الإصدار السادس ip6 وليس الرابع ip4 لهذا يبدو شكله غريبًا عليك, وفي الإصدار السادس عندما يكون هناك مجموعة من الأصفار يتم إختصارها بالعلامة :: لذا فإن العنوان الذي يرجع لك يمكن ترجمته إلى الشكل التالي 0000:0000:0000:0000:0000:0000:0000:0001 والذي يوازي في الإصدار الرابع العنوان 127.0.0.1 والذي هو عنوان الكمبيوتر المحلي localhost اقتباس
السؤال
خالد مرتضى
أحاول الحصول على الip address في socket io باستخدام الدالة socket.handshake.address ولكن يعطيني دائمًا رقم ::1 ما الحل
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.