Титла: Qt QLocalServer problem Публикувано от: lkr в Aug 19, 2009, 20:53 Някой има ли идея в примерите с localfortune client/server как може да се чете от страна на сървъра, използвам следния код при newConnection() сигнал, но size-а винаги е 0.
Код
Изпращането става с: Код
Титла: Re: Qt QLocalServer problem Публикувано от: dvasilev в Aug 19, 2009, 21:41 @lkr: Пропуснал си една итерация. Правиш опит да четеш при newConnection, което е грешка. Всъщност при този сигнал само трябва да инициализираш socket-а. Трябва да четеш, когато съответния QLocalSocket получен при newConnection изпрати readReady сигнал. В момента четеш от socket-а още преди да е получил данните и затова се получава така.
Отделен е въпросът, че в примера, който се опитваш да модифицираш blockSize се използва за проверка на това дали са получени всичките данни. Нещо, което при теб не се проверява. Както замисли се какъв е смисълът на ред 8 в сървърното приложение при наличие на ред 6. Най-вероятно компилатора ще го оптимизира, но все пак. Титла: Re: Qt QLocalServer problem Публикувано от: lkr в Aug 19, 2009, 21:47 Дори когато взема сокета с nextPendingConnection() и задам connect(socket, SIGNAL(readReady()), this, SLOT(read_that())) ефектът е същия.
Титла: Re: Qt QLocalServer problem Публикувано от: dvasilev в Aug 19, 2009, 21:52 @lkr: Дай да видим това read_that какво прави, тъй като поне при това закачане към слот-а не знам по какъв начин той разбира от кой localSocket да чете.
Титла: Re: Qt QLocalServer problem Публикувано от: lkr в Aug 19, 2009, 21:58 Оправих се, явно предния път при закачане към слота е имало друг проблем.
Код
Титла: Re: Qt QLocalServer problem Публикувано от: dvasilev в Aug 19, 2009, 22:11 @lkr: Тази схема няма да работи, когато към сървъра се закачат няколко клиента, които предават едновременно информация към него, тъй като всяко от връзките ще има отделен localSocket. За да се справиш с този проблем на read_that като параметър трябва да предаваш socket-а. В тази ситуация закачането на този сигнал към readReady е малко по-сложно, но на помощ идва QSignalMapper.
Титла: Re: Qt QLocalServer problem Публикувано от: lkr в Aug 19, 2009, 22:12 Но на мен не ми трябва да работи с няколко клиента :) Благодаря все пак.
|