【问题标题】:Choose WebClient outgoing IP [duplicate]选择 WebClient 传出 IP [重复]
【发布时间】:2015-05-02 18:24:38
【问题描述】:

我的 .net 应用程序使用 WebClient 访问 Internet 上的文件,并且我的机器有多个 IP 地址。有没有办法在发出出站请求时以编程方式选择要使用的 IP 而不是第一个 IP? (不一定是 WebClient)

【问题讨论】:

  • 你真的是asked the same question yesterday。当然,那里的大多数 cmets 都大错特错,但其中一位为您指出了 relevant Q&A。从那以后做过任何研究吗?检查ServicePoint.BindIPEndPointDelegate。见duplicate
  • 我看到了,但想问一下是否可以仅使用 webclient
  • 是的,然后从 WebClient 继承并使用 protected override GetWebRequest() 添加该逻辑。

标签: c# .net webclient


【解决方案1】:

实现此目的的一种可能性是使用 ServicePoint.BindIPEndPointDelegate 事件并指定要使用的 IP 地址。

例子:

var uri = new Uri("YOUR URI");
var servicePoint = ServicePointManager.FindServicePoint(uri);
servicePoint.BindIPEndPointDelegate = (sp, remoteEndPoint, retryCount) =>
{
    var address = IPAddress.Parse("PUT YOUR DESIRED IP HERE");
    return new IPEndPoint(address, 0);
};

现在尝试向相应的 url 发出 HTTP 请求。

或者,如果您使用HttpWebrequest,您可以根据请求为每个委托分配这个:

var request = (HttpWebRequest)WebRequest.Create("YOUR URI");
request.ServicePoint.BindIPEndPointDelegate = (sp, remoteEndPoint, retryCount) =>
{
    var address = IPAddress.Parse("PUT YOUR DESIRED IP HERE");
    return new IPEndPoint(address, 0);
};

using (var response = request.GetResponse())
{
   ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2018-10-19
    相关资源
    最近更新 更多