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:
Вставил весь код.