اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

إن أردت عرض 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
نشر

دالة socket.handshake.address تقوم بإرجاع العنوان من الإصدار السادس ip6 وليس الرابع ip4 

لهذا يبدو شكله غريبًا عليك, وفي الإصدار السادس عندما يكون هناك مجموعة من الأصفار يتم إختصارها بالعلامة ::

لذا فإن العنوان الذي يرجع لك يمكن ترجمته إلى الشكل التالي 

0000:0000:0000:0000:0000:0000:0000:0001

والذي يوازي في الإصدار الرابع العنوان 

127.0.0.1

والذي هو عنوان الكمبيوتر المحلي localhost

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...