Доброго времени, All.
Может кто сталкивался с ситуацией, когда в системе на одном сетевом интерфейсе настроенно несколько IP адресов, и программа в зависимости от некоторых обстоятельств должна посылать HTTP запросы с разных IP.
Пользую QHttp, качается все нормально. Но только через 1-й IP из списка настроенных, что, в принципе правильно. Но вот как явно указать, через какой IP нужно идти в нет, не нашел.
Чувствую, что копать нужно в сторону QIODevice.
ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
...
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-virtual-hosts.html
rusgl, пардон, я думал ты на виндовозе так изгаляешся, хоть на нем тоже такое возможно, только головников потом не оберешся.
rusgl, см. класс http://crossplatform.ru/documentation/qtdoc4.3/qnetworkinterface.php
что-то я в некоторой растеренности, есть методы:
QIODevice * QHttp::currentSourceDevice () const
QIODevice * QHttp::currentDestinationDevice () const
но нет методов для установки устройств, а псевдонимы типа: ifconfig_fxp0_alias1, для Qt такие же устройства.
Тебе, для этого нужно сначала создать сокет на нужном тебе сетевом ip, как на qt это делается я пока не знаю, но постараюсь выяснить (если выяснишь раньше чем я, то скажи как делается ).
После чего установить его в http: http://crossplatform.ru/documentation/qtdoc4.3/qhttp.php#setSocket
p.s. осталось только найти аналог bind для tcp сокетов в Qt. bind ведь можно вызывать не только для серверной части, но и для клиентской.
http://www.crossplatform.ru/documentation/qtdoc4.3/qabstractsocket.php#setLocalAddress для абстрактного сокета, от которого и TCP наследует, не спасёт отца русской демократии?
Novak, я тоже такой вариант предположил, но не понятно после этого адрес сменится навсегда или только применительно к этой программе.
С помощью этой функции - для конкретного сокета. Соответственно, получив информацию о всех доступных адресах, можно выбрать нужный и на нём повесить сокет.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)