Как отправить запрос с другого статического IP-адреса на любой сайт? - PullRequest
0 голосов
/ 04 февраля 2012

Я отправляю HTTP-запрос, используя C #. (http://codesamplez.com/programming/http-request-c-sharp)

У меня выделенный сервер. Я приобрел больше статических IP-адресов.

Как я могу отправить запрос, используя эти разные IP-адреса.

1 Ответ

2 голосов
/ 04 февраля 2012

То, что вы хотите сделать, это привязать к определенному сетевому адаптеру.По умолчанию значение LocalEndpoint равно нулю, поэтому ваше подключение будет назначено адаптеру.Вы можете указать, что связывать с использованием HttpWebRequest.ServicePoint.BindIPEndPointDelegate.

var req = (HttpWebRequest)WebRequest.Create("http://google.com/");
req.ServicePoint.BindIPEndPointDelegate = BindTo;
using (req.GetResponse());

static IPEndPoint BindTo(ServicePoint servicepoint, IPEndPoint remoteendpoint, int retrycount)
{
    IPAddress ip = IPAddress.Any; //This is where you specify the network adapter's address
    int port = 0; //This in most cases should stay 0. This when 0 will bind to any port available.
    return new IPEndPoint(ip, port);
}

Вот еще некоторые сведения о привязке из MSDN.Привязать метод, если вам нужно использовать конкретную локальную конечную точку.Вы должны вызвать Bind, прежде чем сможете вызвать метод Listen. Вам не нужно вызывать Bind перед использованием метода Connect, если только вам не нужно использовать определенную локальную конечную точку. Вы можете использовать метод Bind как для протоколов без установления соединения, так и для ориентированных на соединение протоколов.

Перед вызовом Bind вы должны сначала создать локальный IPEndPoint, из которого вы собираетесь передавать данные.Если вам все равно, какой локальный адрес назначен, вы можете создать IPEndPoint, используя IPAddress.Any в качестве параметра адреса, и основной поставщик услуг назначит наиболее подходящий сетевой адрес.Это может помочь упростить ваше приложение, если у вас есть несколько сетевых интерфейсов.Если вам все равно, какой локальный порт используется, вы можете создать IPEndPoint, используя 0 для номера порта.В этом случае поставщик услуг назначит номер доступного порта в диапазоне от 1024 до 5000.

Если вы используете описанный выше подход, вы можете узнать, какой адрес локальной сети и номер порта был назначен, позвонивLocalEndPoint.Если вы используете протокол с установлением соединения, LocalEndPoint не вернет локально назначенный сетевой адрес до тех пор, пока вы не вызовете метод Connect или EndConnect.Если вы используете протокол без установления соединения, у вас не будет доступа к этой информации, пока вы не завершите отправку или получение.

...