Russian Qt Forum
Ноябрь 23, 2024, 22:19
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Клиент не может соединиться с сервером
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Клиент не может соединиться с сервером (Прочитано 13436 раз)
crossly
Гость
Re: Клиент не может соединиться с сервером
«
Ответ #15 :
Сентябрь 28, 2010, 13:02 »
почему к сожалению....?? в добавок ко всему я так понимаю ip по dhcp раздается??
Записан
Hellraiser
Бывалый
Offline
Сообщений: 451
Re: Клиент не может соединиться с сервером
«
Ответ #16 :
Сентябрь 28, 2010, 13:09 »
[offtop]
Потому, что сервер может быть физически недоступен - установлен где-то в другом месте, нет доступа и т.п. А вариант с пингом может помочь в такой ситуации (если только на сервере не приняты спец. меры по блокировке icmp и отключению NetBIOS (блокировке служб).
Если у сервера ip динамический - все гораздо хуже. Сработает только на текущую резервацию DHCP (48 часов по-умолчанию на маршрутизаторе).Поможет только статический, либо динамический с резервацией по MAC
[/offtop]
Записан
crossly
Гость
Re: Клиент не может соединиться с сервером
«
Ответ #17 :
Сентябрь 28, 2010, 14:18 »
ну.... во первых... если человек который устанавливает ПО на сервер по определению должен знать его ip.... и по второму... если дописать немного кода серверу и клиенту, то клиент и сам сможет узнать адрес сервера...
Записан
merke
Гость
Re: Клиент не может соединиться с сервером
«
Ответ #18 :
Сентябрь 28, 2010, 14:20 »
Цитировать
если дописать немного кода серверу и клиенту, то клиент и сам сможет узнать адрес сервера...
А можно подробнее о таком фокусе?
Записан
Hellraiser
Бывалый
Offline
Сообщений: 451
Re: Клиент не может соединиться с сервером
«
Ответ #19 :
Сентябрь 28, 2010, 14:25 »
DHCP + DNS (в локальной сети), DNS (для серверов с выделенным ip в инете, либо при динамическом адресе в инете поможет DynDNS). Это в плане организации. А в плане Qt смотрим
http://doc.qt.nokia.com/4.6/network-programming.html#resolving-host-names-using-qhostinfo
(смотреть пример по lookupHost).
«
Последнее редактирование: Сентябрь 28, 2010, 14:29 от Hellraiser
»
Записан
crossly
Гость
Re: Клиент не может соединиться с сервером
«
Ответ #20 :
Сентябрь 28, 2010, 14:28 »
1. да DNS.
2. использовать udp broadcast..... клиент шлет датаграмму в сеть.... сервер ловит и сообщает клиенту свой адрес...
Записан
Hellraiser
Бывалый
Offline
Сообщений: 451
Re: Клиент не может соединиться с сервером
«
Ответ #21 :
Сентябрь 28, 2010, 14:31 »
Тоже очень хороший вариант - в локальной сети так даже лучше (чтобы не мудрить с поднятием DNS-сервера в локалке)
Записан
merke
Гость
Re: Клиент не может соединиться с сервером
«
Ответ #22 :
Сентябрь 28, 2010, 14:34 »
Так теперь понятно! Спасибо!
Теперь какую функцию вызвать в QTcpServer дабы получить реальный адрес сервера?
Записан
crossly
Гость
Re: Клиент не может соединиться с сервером
«
Ответ #23 :
Сентябрь 28, 2010, 14:37 »
ээ... не совсем понял... для чего на сервере узнавать его же адрес??
сори торможу
Код:
QHostAddress QTcpServer::serverAddress () const
«
Последнее редактирование: Сентябрь 28, 2010, 14:41 от crossly
»
Записан
merke
Гость
Re: Клиент не может соединиться с сервером
«
Ответ #24 :
Сентябрь 28, 2010, 14:43 »
Блин уже после всего дня гоню блин.
Записан
Hellraiser
Бывалый
Offline
Сообщений: 451
Re: Клиент не может соединиться с сервером
«
Ответ #25 :
Сентябрь 28, 2010, 14:54 »
Пусть сервер слушает порт 1234/tcp для обмена данными и порт 1234/udp для ответа адреса (см. здесь
http://doc.qt.nokia.com/4.6/network-programming.html#using-udp-with-qudpsocket
). По приходу udp-запроса на порт 1234 сервер отвечает по адресу клиента (а его он узнает из 3-го параметра в readDatagram) сообщением со своим ip. Клиент принимает сообщение (значит надо чтобы он тоже слушал определенный udp-порт), узнает адрес сервера и устанавливает соединение. Как-то так.
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...