![]() |
|
|
![]()
|
|
| Aline |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Мне необходимо реализовать следующее: я так понимаю, что это будет серверное приложение (если ошибаюсь - поправьте), которое может работать в двух режимах (причем наверно одновременно,но в тестовом варианте пока попеременно). Один режим: мы получаем посылку от клиента (какая то команда по TCP/IP) и на неё должны ответить должным образом. В другом режиме мы с сервера должны передавать набор команд (причем с паузой между командами) разово или циклически (устанавливается флаг цикличности).
Поскольку я с Qt только начала работать, то у меня возникли определенные трудности. По книге Земскова пытаюсь делать сервер и клиент. Не знаю, может не то выбрала. Сервер - асинхронный однопоточный эхо-сервер.
Сервер запускается и пишет,ч то готов к работе, т.е. ошибок не возникает. Клиент для эхо-сервера:
Здесь вроде проходит без ошибки. Но смущает то, что в сервернной части ставлю точку останова в процедуре AddConnection() и туда не попадаю. как проверить то,что соединение установлено или нет? Или может вообще всё неправильно делаю? Смотрела пример Fortune Server и Client, но что то там совсем мудреное... Это сообщение отредактировал(а) Aline - 18.9.2013, 10:51 |
||||
|
|||||
| Jeka178RUS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 3.9.2012 Репутация: нет Всего: нет |
delete
Это сообщение отредактировал(а) Jeka178RUS - 18.9.2013, 12:56 |
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Jeka178RUS, что с этим делать?
|
|||
|
||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
Здесь, видимо, неправильно написано. Нужно подключаться к сигналу от tcpServer. |
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Guinness, сейчас попробую изменить, но в книге именно так написано. А в остальном на первый взгляд нормальо?
Добавлено через 8 минут и 28 секунд написала
всё равно не срабатывает... |
|||
|
||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
Aline, можно после подключения, в сокет что-нибудь и записать, дабы проверить onReceive(). А потом и закрыть соединение, чтобы отследить как зыкрывается соединение на сервере.
А так сервер простейший, только не ясно, зачем там проверка ui->radioBtnTr->isChecked(), если обе ветки идентичны, за исключением прослушиваемого порта. Можно его выбрать, а не копипастить весь код из одной ветки в другую. |
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Guinness, разница будет в реализации. Пока просто тестирую. Я кажется поняла свою ошибку, сейчас переделаю. Если заработает, то выложу здесь
|
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Guinness, всё, соединение установила, тперь дальше надо разбираться. Во-первых, в книге был создан клсс EchoServer на основе QTcpServer и реализация была сделана в классе. Я этого не заметила и делала всё в главном окне. Но самая глупая ошибка была в том (и скорее всего из-за этого и не получалось), что здесь:
написано addConection, а в сама процедура называется addConnection. Он её просто не находил,но почему при этом не ругался |
|||
|
||||
| Guinness |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 21.6.2009 Где: Зеленоград Репутация: 2 Всего: 10 |
Обычно Qt в отладочной печате пишет, что не смог найти требуемый слот/сигнал. А для себя я давно уже написал обертку над connect, которая проверяет от него возвращаемое значение и, в случае false, выводит messageBox с ошибкой. |
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Guinness, не обратила внимание на это.
Сейчас вот соединение устанавливается, но потом почему то дисконнект вызывается,т.е. клиент получается отваливается |
|||
|
||||
| Snake174 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 5.10.2011 Где: Miass Репутация: нет Всего: нет |
Ну я так понимаю клиент коннектится, устанавливается соединение, передаются данные, соединение закрывается. Вроде всё так и должно быть.
Весь код выложи. Под винду или под линукс пишешь? Добавлено @ 11:41 Небольшой пример Это сообщение отредактировал(а) Snake174 - 19.9.2013, 11:46 Присоединённый файл ( Кол-во скачиваний: 3 )
client_server.zip 4,49 Kb |
|||
|
||||
| Aline |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Snake174, спасибо! Примерчик посмотрю. В дальнейшем планируется использовать под Линукс. Ошибки банальные, из-за невнимательности. Связь должна быть постоянной, пока смерть сервер(клиент) не разлучит их
Неправильно описала
надо было либо вывести в глобальные либо
|
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |