2011-07-11 111 views
7

DSN可以返回多个IP地址,而不是使用DNS解析来获取我的请求后的IP地址我想获取我的HttpWebRequest连接到的IP。如何获取HttpWebRequest连接的服务器的IP地址?

无论如何要在.NET 3.5中做到这一点?

例如,当我做一个简单的Web请求访问www.microsoft.com我想得知其IP地址,连接发送HTTP请求,我想这个编程(不通过的Wireshark等

回答

4

在这里你去

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; 
     } 

使用remoteEndPoint收集所需的数据。

+1

有什么理由建立一个WebProxy? –

+0

其次不会返回remoteEndPoint会失败吗?当我读取BindIPEndPointDelegate用于绑定本地IP地址时,如果返回remoteEndPoint,它将失败(或类似的东西),因为它无法绑定它。我假设返回这应该修复它,虽然:新IPEndPoint(IPAddress.Any,0) –

+1

我已经尝试过,但BindIPEndPoint1方法永远不会被调用。 – user626528

2

这是一个工作示例:

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()); 
    } 
} 
相关问题