2011-07-11 50 views
7

DSN có thể trả về nhiều địa chỉ IP thay vì sau đó sử dụng DNS giải quyết để lấy địa chỉ IP sau khi yêu cầu của tôi tôi muốn nhận được IP mà HttpWebRequest của tôi đã kết nối.Cách nhận địa chỉ IP của máy chủ mà HttpWebRequest kết nối với?

Có cách nào để thực hiện việc này trong .NET 3.5 không?

Ví dụ khi tôi làm một yêu cầu web đơn giản để www.microsoft.com Tôi muốn biết rằng đó địa chỉ IP nó kết nối để gửi yêu cầu HTTP, tôi muốn điều này lập trình (không qua Wireshark, vv)

Trả lời

4

đây bạn đi

static void Main(string[] args) 
     { 
      HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.microsoft.com"); 
      req.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPoint1); 

      Console.ReadKey(); 
     } 

     public static IPEndPoint BindIPEndPoint1(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount) 
     { 
      string IP = remoteEndPoint.ToString(); 
      return remoteEndPoint; 
     } 

Sử dụng remoteEndPoint để thu thập các dữ liệu mà bạn muốn.

+1

Có bất kỳ lý do để tạo một WebProxy? –

+0

Thứ hai sẽ không trở về từ xaEndPoint sẽ thất bại? Khi tôi đọc BindIPEndPointDelegate được sử dụng để liên kết một địa chỉ IP cục bộ, nếu bạn trả về remoteEndPoint, nó sẽ thất bại (hoặc một cái gì đó tương tự) vì nó sẽ không thể liên kết nó. Tôi giả định trả lại điều này nên sửa chữa nó mặc dù: IPEndPoint mới (IPAddress.Any, 0) –

+1

Tôi đã thử điều này, nhưng phương pháp BindIPEndPoint1 không bao giờ được gọi. – user626528

2

Đây là một ví dụ làm việc:

using System; 
using System.Net; 

class Program 
{ 
    public static void Main() 
    { 
     IPEndPoint remoteEP = null; 
     HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com"); 
     req.ServicePoint.BindIPEndPointDelegate = delegate (ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount) { 
      remoteEP = remoteEndPoint; 
      return null; 
     }; 
     req.GetResponse(); 
     Console.WriteLine (remoteEP.Address.ToString()); 
    } 
} 
Các vấn đề liên quan