每次运行某些功能时更新代表

时间:2010-12-09 18:21:18

标签: c# delegates

行。我觉得我的头衔很糟糕。我不知道那么多委托,只是说它们就像C中的函数指针一样...... 我有一些代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace lol
{
    class FetchHttpSite
    {
        public static string Download(string url, string ip)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.AllowAutoRedirect = true;
            req.UserAgent = UserAgent.Random();
            req.ServicePoint.BindIPEndPointDelegate = delegate(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount) {
                return new IPEndPoint(IPAddress.Parse(ip), 0);
            };

            HttpWebResponse webResponse;

            string content;

            webResponse = (HttpWebResponse)req.GetResponse();
            using (StreamReader stream = new StreamReader(webResponse.GetResponseStream()))
                content = stream.ReadToEnd();

            return content;
        }
    }
}

我想获取具有不同IP的网站。但是当我尝试这个时,我意识到这个代表就像......静态xD。它只需要我给他的第一个IP。因此,如果我给他一个新的IP,他仍将使用他得到的第一个。我在Stackoverflow btw上找到了BindIPEndPointDelegate代码。

所以我希望该委托总是采用该字符串ip。比如,一直在更新自己。这可能吗。我该怎么做呢?可能吗?我可以用另一种方式吗?

谢谢!

编辑:

我想使用该IP获取网站我提供方法。所以当网络服务器得到我的请求时,我的地址是字符串ip参数。 :)

该方法有效!你看我以前尝试过:返回新的IPEndPoint(IPAddress.Parse(ip),0);,例如Console.Writeline(“你好!”);然后它会运行一次!即使你问我100x。它只需要从第一个IP使用该方法。谢谢!

编辑2:

粘贴整个代码。

0 个答案:

没有答案