Russian Qt Forum
Ноябрь 23, 2024, 14:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: [socket] Не соединяет SIGNAL(newConnection()) со слотом  (Прочитано 11002 раз)
vaansk
Гость
« Ответ #15 : Октябрь 08, 2013, 22:31 »

убрал, пересобрал, не вызывается.
пойду комп ребутну на всякий случай
Записан
vaansk
Гость
« Ответ #16 : Октябрь 08, 2013, 22:43 »

ну точно не клиент, перенес socket->close(), ребутнул комп, пересобрал и тоже самое, newuser() на сервере не запускается
Записан
vaansk
Гость
« Ответ #17 : Октябрь 09, 2013, 19:31 »

может еще кто то разбавит тишину?
Записан
vaansk
Гость
« Ответ #18 : Октябрь 10, 2013, 15:20 »

Продолжу излагать то, что пытался делать с целью поднять тему и возродить дискуссию актуальной проблемы:

на клиенте после socket->ConnetToHost()

вызываю метод socket->state(), приводя его к bool
результат: возвращает true
т.е. клиент нормально конектится, при этом метод newuser(), привязанный к сигналу newConnection() все также не вызывается(
Записан
Bepec
Гость
« Ответ #19 : Октябрь 10, 2013, 17:33 »

Хотите помощи и уверены что проблема не в вашем коде - делайте минимальный компилируемый пример вашей неполадки и выкладывайте в архиве. Тогда вам помогут.
Записан
vaansk
Гость
« Ответ #20 : Октябрь 10, 2013, 19:27 »

Исходников на гитхабе мало?

Qt последняя версия + Add-In Visual studio
(MS VS 2010)

вот актуальные исходники http://rghost.ru/49294418
« Последнее редактирование: Октябрь 10, 2013, 19:38 от vaansk » Записан
Bepec
Гость
« Ответ #21 : Октябрь 10, 2013, 20:11 »

Мало. Ибо не люблю гитхаб. Люблю архивы на prog.org.ru или иных ресурсах "в один клик".

Посмотрел ваш проект. Вас не смущает вот этот код?
Код:
    QCoreApplication a(argc, argv);

    ourtrackserv Service;
    QTextStream in(stdin);
    QTextStream out(stdout);
   
    QString command = argv[1];
    do
    {
      command = command.toUpper();

      if (command == "START")
        Service.on_starting();
      else if (command == "STOP")
        Service.on_stoping();
      else if (command == "STATUS")
        Service.on_status();
     
      command = in.readLine();
    }
    while (!command.isNull());

    return a.exec();

Не смущает, видимо.

Суть - асинхронные интерфейсы в Qt используют систему сигнал-слотов.

Краткий экскурс - сигнал слоты работают после a.exec().

Краткое подведение итогов - теперь вы знаете, что вам нужно вызывать exec для работы сигнал слотов.

Окончательное решение проблемы - поменять код ввода команд, задуматься над архитектурой.

PS Базис для раскопок я дал, даже много. Вот работающий сервер -
Код:
#include <QtCore/QCoreApplication>
#include "ourtrackserv.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    ourtrackserv Service;
    Service.on_starting();
    return a.exec();
}
Записан
vaansk
Гость
« Ответ #22 : Октябрь 10, 2013, 20:14 »

благодарю
Записан
Bepec
Гость
« Ответ #23 : Октябрь 10, 2013, 20:54 »

Пожалуйста.
В принципе тему можно или удалить или закрыть. Я склоняюсь к удалить, проблема массовая.

PS решайте сами Улыбающийся Только вы царь этой темы.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 20.