Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Как выбрать исходящий IP адрес? |
Автор: Dims 7.1.2009, 17:07 |
Если у меня сетевая карта имеет несколько IP адресов, то как мне выбрать, через какой из них осуществляется WebRequest? |
Автор: Partizan 7.1.2009, 18:10 |
Dims, как сетевая карта в один момент времени может иметь несколько IP адресов???? |
Автор: Dims 7.1.2009, 19:30 |
Вы можете зайти в настройки своей сети (под Windows) и убедиться, что много IP адресов на одной карте -- это штатная функция. Адреса должны быть статические. Кажется, это называется multihomed. Linux, естественно, тоже позволяет присваивать одной карте несколько адресов. Так вот, если УЖЕ настроено несколько IP адресов на одной карте, то как выбрать из программы, через какой из настроенных адресов происходит обращение? |
Автор: rooks 7.1.2009, 23:35 | ||||
Есть такой класс
![]() |
Автор: avvo 8.1.2009, 07:11 |
Socket socket = new Socket(); socket.bind(new InetSocketAddress("1.1.1.1",12345)); socket.connect(new InetSocketAddress("2.2.2.2", 12345)); главное, чтобы от 1.1.1.1 (локальный клиент) существовал путь до 2.2.2.2 (удаленный сервер), включая локальную роутинговую таблицу. |
Автор: PashaPash 8.1.2009, 13:01 |
Dims, судя по рефлектору - никак. HttpWebRequest не вызывает bind перед connect. |
Автор: nmn 8.1.2009, 13:26 |
выбор интерфейса то бишь исходящего ip определяется по таблице маршрутизации, в windows "route print" чтобы посмотреть таблицу |
Автор: PashaPash 8.1.2009, 17:08 |
nmn, ага, а на один интерфейс может быть назначено несколько IP-адресов из одной подсети. И для выбора конкретного клиентского адреса/порта нужно вручную указать его вызовом Socket.Bind. Никакие route print тут не помогут. |
Автор: Dims 9.1.2009, 21:44 |
Хорошо, ну а как, хотя бы, выбрать исходящий порт? И если опять никак, то какой порт выбирается автоматически? Каждый раз новый на новый реквест? Или иногда старый? |
Автор: PashaPash 9.1.2009, 23:41 |
Dims, никак, выбирается по принципу "available port number between 1024 and 5000." |