عند استرداد URL عبر httpwebrequest ، هل يمكنني رؤية عنوان IP لخادم الوجهة؟
-
21-09-2019 - |
سؤال
لنفترض أنني أسترجع عنوان 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 ، لذلك أوصي بإضافة اختبار الوحدة.