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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: out << Не хочет отсылать строки, возвращаемые функциями типа QString  (Прочитано 3596 раз)
G-virus
Гость
« : Март 23, 2010, 21:58 »

Прошу помощи. Вроде ничего не принимал, глюков быть не должно. Но все же я вижу это!! Вот фрагмент кода сервера:
Код
C++ (Qt)
QDataStream in(&socket);
   QDataStream out(&buf, QIODevice::WriteOnly);
   in.setVersion(QDataStream::Qt_4_6);
   in >> strB;
   switch(strB.toInt()){
      case 0: out << openCloseCd(); break;
      case 1: out << setScreenSize(); break;
      case 2: out << setGetFileFromFtp(); break;
      case 3: out << msgInputOutputDialog(); break;
   default: MessageBox(NULL, "Error!!!!", "Error!!!!!", 0);
   }
 

функции openCloseCd();, setScreenSize(); имеют тип QString. в конце делаю где return "Строка", а где return strA. (strA == "Строка"). По идее out << должен отослать то, что возвратилось в результате работы одной  из функций, а он не отсылает! Функции срабатывают. Ошибок и warning-ов Qt Creator не дает. А вот отсылать не хочет.

шо делать люди??  Смеющийся
« Последнее редактирование: Март 23, 2010, 23:09 от G-virus » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 23, 2010, 22:10 »

Исправь заголовок темы на номальный.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
G-virus
Гость
« Ответ #2 : Март 23, 2010, 22:12 »

Исправь заголовок темы на номальный.
Так нормально??


Я немного поколдовал, отсылать все стало. Только приходит пустое сообщение вместо строки  Непонимающий
« Последнее редактирование: Март 23, 2010, 23:10 от G-virus » Записан
DmP
Гость
« Ответ #3 : Март 24, 2010, 12:12 »

Код
C++ (Qt)
   QDataStream out(&buf, QIODevice::WriteOnly);
 
У тебя в out был буфер, а не сокет, по этому видимо и не отправляло. А вообще если хочешь, что бы отвечали приводи достаточно текста, что бы было видно что делает и сервер и клиент.
Записан
G-virus
Гость
« Ответ #4 : Март 24, 2010, 18:52 »

У тебя в out был буфер, а не сокет, по этому видимо и не отправляло.
Ну я уже это понял)))

 Если не понятно, вот фрагменты ресивера на сервере, сендер на клиенте и функция типа QString:
Ресивер на серве:
Код
C++ (Qt)
void ClientSocket::readClient()
{
   QDataStream in( this );
   QDataStream out( this );
   in.setVersion(QDataStream::Qt_4_5);
   in >> strA;
   QMessageBox::information(NULL, "Принятые данные", strA, 0, 0);
   strA = QInputDialog::getText(NULL, "Отправить", "Введите мессагу");
   out << strA;
   this->write(strA.toAscii());
   this->flush();
}
 

фрагмент сендера на клиенте:
Код
C++ (Qt)
void MainWindow::getDataStream()
{
   QDataStream in(&socket);
   QDataStream out(&socket);
   in.setVersion(QDataStream::Qt_4_6);
   in >> strB;
   switch(strB.toInt()){
      case 0: out << openCloseCd(); break;
      case 1: out << setScreenSize(); break;
      case 2: out << setGetFileFromFtp(); break;
      case 3: out << msgInputOutputDialog(); break;
   default: MessageBox(NULL, "Error!!!!", "Error!!!!!", 0);
   }
}
 

а вот функция типа QString:
Код
C++ (Qt)
QString MainWindow::openCloseCd()
{
    mciSendString("Set CDAudio Door Open", 0, 0, 0);
    return "Complete";
}
 

Я пробовал сделать переменную QString strA; потом присвоить strA = "Complete"; и отправлять так return strA; Но все равно на сервер приходит сообщение, которое выводится QMessageBox'ом как пустое.




Хмм... видимо проблема в потери пакетов, или что-то подобное. Я стал тестить. На первый запрос приходит пустое сообщение, на второе когда приходит Complete, а когда клиент падает. О_о ваще не пойму ничего



Правильного вывода добился, осталось отладить клиент, но это уже оффтоп


и клиент уже отладил  Смеющийся Сносите тему, админы
« Последнее редактирование: Март 24, 2010, 23:03 от G-virus » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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