Название: QT и тср сервер Отправлено: Zizilk от Июль 22, 2010, 12:35 Пытался разобраться сам с примером на QT fortune server.
По большей части разобрася. Не считая того как задать обработку новых сообщений от старых соединений. Тк насколько я понял сам сервер реагирует только на новые подключения. Как я понимаю нужно писать цикл, но вот вопрос какой :-[ в программировании новичок, а в qt и подавно И где можно посмотреть список сигналов? Название: Re: QT и тср сервер Отправлено: kuzulis от Июль 22, 2010, 13:32 Всё просто.
Цитировать По большей части разобрася. Не считая того как задать обработку новых сообщений от старых соединений. Тк насколько я понял сам сервер реагирует только на новые подключения. При новом подключении к серверу у сервера автоматически происходят следующие действия: 1. Объект сервера вызывает автоматически метод: void incomingConnection ( int socketDescriptor ) в котором socketDescriptor - это дескриптор сокета входящего подключения. 2. Объект сервера автоматически отправляет сигнал: void newConnection () Далее вы поступаете любым из следующих методов (как вам захочется): 1. Если вы хотите упор сделать на использование void incomingConnection ( int socketDescriptor ) то вы должны переопределить этот метод, написав в его теле нужный вам код, например: Код: void YuorServer::incomingConnection(int socketDescriptor) 2. Если упор на сигнал void newConnection () - то вам необходимо создать какой-нить слот с любым названием, типа: void slotProcNewConnection(). Предварительно нужно подключить сигнал, который испускает объект сервера к вашему слоту. А в теле слота написать так: Код: void YuorServer::slotProcNewConnection() Цитировать Как я понимаю нужно писать цикл, но вот вопрос какой Обеспокоенный Не нужно никаких цикловЦитировать в программировании новичок, а в qt и подавно почитайте книжки по Qt4 для начала типа М. Шлее или Ж. Бланшет. Для начала. Литература имеется и на этом форуме в разделе "Общие вопросы" и на форуме: crossplatform.ruЦитировать И где можно посмотреть список сигналов? Найдите в той директории куда установлен у вас Qt4 екзешник: assistant.exe и запустите его. Вот в кратце как оно всё работает :) Название: Re: QT и тср сервер Отправлено: Zizilk от Июль 22, 2010, 13:34 Спасибо за развёрнутый ответ) книжки обязательно почитаю)
Название: Re: QT и тср сервер Отправлено: Zizilk от Июль 23, 2010, 23:46 Получалось заставить слушать его, но возникла проблемма с connect функцией.
Код: #include <QtCore/QCoreApplication> При попытки использовать её выводит ошибки Код: C:/Qt/2010.04/qt/Test_orion_server-build-desktop/../Test_orion_server/main.cpp:22: error: invalid use of 'this' in non-member function Название: Re: QT и тср сервер Отправлено: SimpleSunny от Июль 24, 2010, 00:17 SLOT должен быть функцией класа.
Название: Re: QT и тср сервер Отправлено: Sahab от Июль 24, 2010, 08:47 2Zizilk connect это метод QObject Код: QObject::connect(...); Название: Re: QT и тср сервер Отправлено: Zizilk от Июль 24, 2010, 19:18 Написал класс соответсвующий с this ошибка исчезла появилась новая и новая ошибка
Код: #include <QtCore/QCoreApplication> ошибка Код: C:/Qt/2010.04/qt/Test_orion_server-build-desktop/../Test_orion_server/main.cpp:24: error: no matching function for call to 'QObject::connect(QTcpServer*&, const char*, mainserver* const, const char*)' Название: Re: QT и тср сервер Отправлено: SimpleSunny от Июль 24, 2010, 21:22 СРочно читать про программирование с использованием Qt.
По теме. Забыли указать SLOT и макрос Q_OBJECT Код
Название: Re: QT и тср сервер Отправлено: Zizilk от Июль 24, 2010, 21:48 Да я заметил(
Но проблема осталась. Щас вообще взял пример сервера предсказаний и переделал под свои нужды. Всё та же самая фиговина. +в объявлении класса ругается на отсутсвие макроса, хотя он там есть Оо Название: Re: QT и тср сервер Отправлено: Zizilk от Июль 24, 2010, 22:19 Код: #ifndef SERVER_H Для макросов надо что-то ещё прописывать в pro файле? Название: Re: QT и тср сервер Отправлено: SimpleSunny от Июль 24, 2010, 22:27 Еще надо унаследоваться от QObject
Код
Название: Re: QT и тср сервер Отправлено: Zizilk от Июль 24, 2010, 22:30 Да я понял)
только что набирал) когда ответили) спасибо) Цитировать Всё разобрался :D Поскольку приложение консольное то везде поудалял наследования от диалога(которые достались от сервера предсказаний, и который наследовал от QObject) Сейчас поставил в наследование Qobject моему классу, всё заработало). По крайней мере запустилось) Название: Re: QT и тср сервер Отправлено: Zizilk от Июль 26, 2010, 17:46 Имею такой код
Код: #include <QtNetwork> На php написал клиент, который конектится к хосту. Клиент проверял, без запущенного сервера пишет, что не может подключится. С запущенным сервером(до того как ему сказал, читать сокет) подключался(по крайней мере если верить php клиенту.) Интересно другое, несмотря на то, что как бы NewConnection у меня связан с функцией коннектом. Она почему-то не вызывается. Те вижу надпись "server works fine", а сообщения о новом подключении нет(следовательно не заходит в функцию, а значит не обрабатывает сигнал....) Работаю в дебажном режиме |