Обновлять делегат каждый раз при запуске какой-либо функции - PullRequest
1 голос
/ 09 декабря 2010

OK.Я думаю, что мой титул очень плохой.Я не знаю так много делегатов, только то, что они похожи на указатели функций в 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, он все равно будет использовать первое, что получил.Я обнаружил, что код BindIPEndPointDelegate здесь, на Stackoverflow, кстати.

Так что я хочу, чтобы этот делегат всегда принимал эту строку ip.Мол, обновляйся сам все время.Это возможно.Как мне это сделать?Является ли это возможным?Могу ли я сделать это по-другому?

Спасибо!

РЕДАКТИРОВАТЬ:

Я хочу получить сайт, используя тот IP-адрес, который я предоставляю этому методу.Поэтому, когда веб-сервер получает мой запрос, мой адрес является аргументом строки ip.:)

Метод работает!Вы видите, я пытался раньше: вернуть новый IPEndPoint (IPAddress.Parse (ip), 0); например, Console.Writeline ("привет!"); Тогда он будет запущен только один раз!Даже я прошу 100 раз.Это только берет IP от первого, чтобы использовать метод.Спасибо!

РЕДАКТИРОВАТЬ 2:

Вставил весь код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...