首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在HttpWebRequest中更改源IP

如何在HttpWebRequest中更改源IP
EN

Stack Overflow用户
提问于 2010-07-27 23:45:22
回答 2查看 18.1K关注 0票数 18

我在一个分配了5个IP的服务器上运行这个应用程序。我使用HttpWebRequest从网站获取一些数据。但当我建立连接时,我必须能够指定从5个I中的哪一个进行连接。HttpWebRequest是否支持这一点?如果没有,我可以从它继承一个类来改变它的行为吗?我需要这样的点子。

我现在的代码类似于:

代码语言:javascript
复制
System.Net.WebRequest request = System.Net.WebRequest.Create(link);
((HttpWebRequest)request).Referer = "http://application.com";
using (System.Net.WebResponse response = request.GetResponse())
{
    StreamReader sr = new StreamReader(response.GetResponseStream());
    return sr.ReadToEnd();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-27 23:53:23

根据this的说法,没有。您可能必须下拉到使用套接字,我知道您可以选择本地IP。

编辑:实际上,这似乎是可能的。HttpWebRequest有一个ServicePoint属性,而这个属性又有BindIPEndPointDelegate,这可能就是您要找的。

给我点时间,我来举个例子...

代码语言:javascript
复制
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://stackoverflow.com");

req.ServicePoint.BindIPEndPointDelegate = delegate(
    ServicePoint servicePoint,
    IPEndPoint remoteEndPoint,
    int retryCount) {

    if (remoteEndPoint.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6) {
        return new IPEndPoint(IPAddress.IPv6Any, 0);
    } else {
        return new IPEndPoint(IPAddress.Any, 0);
    }

};

Console.WriteLine(req.GetResponse().ResponseUri);

基本上,委托必须返回一个IPEndPoint。你可以选择你想要的任何东西,但是如果它不能绑定到它,它会再次调用委托,直到int.MAX_VALUE次。这就是为什么我要包含处理IPv6的代码,因为IPAddress.Any是IPv4。

如果你不关心IPv6,你可以摆脱它。此外,我将实际选择IPAddress作为练习留给读者:)

票数 29
EN

Stack Overflow用户

发布于 2013-08-13 06:16:52

试试这个:

代码语言:javascript
复制
System.Net.WebRequest request = System.Net.WebRequest.Create(link);
request.ConnectionGroupName = "MyNameForThisGroup"; 
((HttpWebRequest)request).Referer = "http://application.com";
using (System.Net.WebResponse response = request.GetResponse())
{
    StreamReader sr = new StreamReader(response.GetResponseStream());
    return sr.ReadToEnd();
}

然后尝试将ConnectionGroupName设置为您希望使用的每个源ip的不同内容。

编辑:与上面答案中的IP绑定委托一起使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3345387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档