عند استرداد URL عبر httpwebrequest ، هل يمكنني رؤية عنوان IP لخادم الوجهة؟

StackOverflow https://stackoverflow.com/questions/1365586

سؤال

لنفترض أنني أسترجع عنوان URL على النحو التالي:

string url = "http://www.somesite.com/somepage.html"
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

هل هناك طريقة يمكنني من خلالها رؤية عنوان IP لعنوان URL الوجهة؟ هل تتطلب مكالمة منفصلة؟

شكرًا

هل كانت مفيدة؟

المحلول

انظر إلى فئة System.net.dns. يمكنك الحصول على قائمة بعناوين IP للمضيف من dns.gethostentry () طريقة.

نصائح أخرى

برغم من Dns.GetHostEntry() يمكن أن تحصل على عنوان IP الخاص بالخادم ، في حالة وجود سجلات متعددة لنفس المضيف ، ستحصل عليها جميعًا (المعروفة أيضًا باسم DNS Round-Robin). ومع ذلك ، عند الاتصال فعليًا بخادم الويب ، يختار العميل أحد تلك IPS.

لا يبدو أن هناك طريقة مكشوفة لمعرفة أي IP تم استخدامها بالضبط عند الاتصال. لقد وجدت هذه المعلومات أثناء العمل على حل مراقبة الويب الخاص بنا على www.justwentdown.com. تقع هذه المعلومات في حقل خاص من استجابة الويب ،

myHttpWebResponse.ResponseStream.Connection.ServerAddress

ومع ذلك ، لأن Connection و ServerAddress هي خصائص خاصة/داخلية ، ستحتاج إلى استخدام التفكير للحصول على القيم. لقد وجدت هذا الحل لتكون مفيدة جدا في تلك الحالات.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top