Название: Разрешить доменное имя через прокси Отправлено: Roman_L от Август 23, 2010, 11:06 Всем доброго времени суток!
Имею следующую проблему: при задании имени хоста ip адресом - есть коннект, при задании именем - нет коннекта. Сижу за прокси и никак не пойму в чем дело. Код: #include <QtCore> Цитировать QAbstractSocket::HostNotFoundError upd: Да, 10.10.10.202 - это адрес проксисервера. Всякие setProxy пробовал в разных вариантах - нет успеха. Сижу в окнах."Host not found" Название: Re: Разрешить доменное имя через прокси Отправлено: merke от Август 23, 2010, 12:53 Код: s.connectToHost(QHostAddress("74.125.77.147"), 80, QIODevice::ReadWrite); Нафиг убери QString Название: Re: Разрешить доменное имя через прокси Отправлено: Sahab от Август 23, 2010, 13:20 Цитировать Нафиг убери QString действенное замечание))Название: Re: Разрешить доменное имя через прокси Отправлено: Roman_L от Август 23, 2010, 13:39 Цитировать Нафиг убери QString действенное замечание))Ещё раз о проблеме. Не транслируется адрес с символьной записи в ip адрес. Как видим с прокси и с сервером (по ip) связь устанавливается, но с сервером по символьному адресу (через прокси) нет связи. Кто виноват то в этой ситуации? По идее DNS делает прокси? Или ОС моей машины? И как ходдят в нет опера и пси тогда... Название: Re: Разрешить доменное имя через прокси Отправлено: zenden от Август 23, 2010, 13:50 Roman_L
Вы пишете Код
или Код
если первый вариант, то он работать не будет Название: Re: Разрешить доменное имя через прокси Отправлено: BRE от Август 23, 2010, 14:03 Документация. Описание класса QHostAddress.
Цитировать Note: Please note that QHostAddress does not do DNS lookups. QHostInfo is needed for that. Название: Re: Разрешить доменное имя через прокси Отправлено: Roman_L от Август 23, 2010, 14:11 да-да. Там не совсем корректно. Но на суть это пока не влияет.
Код: qDebug() << QHostInfo::fromName(QString("google.com")).addresses(); возвращает пустые скобочки... upd. Код: QHostInfo hi(QHostInfo::fromName("google.com")); Цитата: console () hi 1 "Host not found" Название: Re: Разрешить доменное имя через прокси Отправлено: zenden от Август 23, 2010, 14:20 Цитировать Domain names are resolved through the SOCKS5 server if the QNetworkProxy::HostNameLookupCapability is enabled, otherwise they are resolved locally and the IP address is sent to the server доменные имена не могут преобразовываться в IP адреса через HTTP proxy. Название: Re: Разрешить доменное имя через прокси Отправлено: Roman_L от Август 23, 2010, 14:32 Цитировать Domain names are resolved through the SOCKS5 server if the QNetworkProxy::HostNameLookupCapability is enabled, otherwise they are resolved locally and the IP address is sent to the server доменные имена не могут преобразовываться в IP адреса через HTTP proxy. Название: Re: Разрешить доменное имя через прокси Отправлено: zenden от Август 23, 2010, 14:37 Я еще раз перечитал документацию, и пришел к выводу что Qt вообще не поддерживает DNS Lookup через прокси, т.е. QHostInfo преобразует адреса локальным образом.
Тем не менее, даже если QHostInfo не будет работать, подключение по доменному имени через s.connectToHost("hostname") работать должно! Название: Re: Разрешить доменное имя через прокси Отправлено: crossly от Август 23, 2010, 14:39 Цитировать Domain names are resolved through the SOCKS5 server if the QNetworkProxy::HostNameLookupCapability is enabled, otherwise they are resolved locally and the IP address is sent to the server доменные имена не могут преобразовываться в IP адреса через HTTP proxy. Название: Re: Разрешить доменное имя через прокси Отправлено: zenden от Август 23, 2010, 16:46 crossly
а это не был перевод. Но я потом понял, что то что я цитировал к делу не относится. Название: Re: Разрешить доменное имя через прокси Отправлено: Roman_L от Август 24, 2010, 10:31 Я еще раз перечитал документацию, и пришел к выводу что Qt вообще не поддерживает DNS Lookup через прокси, т.е. QHostInfo преобразует адреса локальным образом. По идее Qtшные либы дергают системные вызовы, не более. И уже ОС резолвет имена, локально-глобально - её забота.Тем не менее, даже если QHostInfo не будет работать, подключение по доменному имени через s.connectToHost("hostname") работать должно! Это как оно будет работать без ip? В целом. Долго комбинировал тип прокси, флаги capabilities,... и прочее. Все, кроме резолва имен работает на ура. С самого сервера все тоже работает на ура. (на сервере окноХР, usergate, адсл с авторизацией(бриджом), в проксе есть галочка "Разрешить DNS-forward", но она не установлена.) Знающих как делается резолв в приложениях на qt прошу откликнуться. ЗЫ. Скачал исходники Psi. Не нашел даже упоминания класса QNetworkProxy. Название: Re: Разрешить доменное имя через прокси Отправлено: Roman_L от Август 26, 2010, 08:04 Цитировать Domain names are resolved through the SOCKS5 server if the QNetworkProxy::HostNameLookupCapability is enabled, otherwise they are resolved locally and the IP address is sent to the server доменные имена не могут преобразовываться в IP адреса через HTTP proxy. ЗЫ. Посмотрел qutIM, прокся сделана как в qt-шных примерах, как у меня... |