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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT и синхронные сокеты  (Прочитано 9175 раз)
Sir_J
Гость
« : Июль 22, 2005, 20:42 »

есть код
Код:

.....................................
socket = new QSocket( this );
socket->connectToHost( host, port);
QTextStream os(socket);
os << doc.toString() << QChar(4);
QString xml;
while ( socket->canReadLine() )   xml += socket->readLine();
  qWarning(xml);
socket->close();
this->close();

он не работает qWarning ничего не выдает
но если сделать так
Код:

.................................................
socket = new QSocket( this );
connect( socket, SIGNAL(readyRead()), SLOT(socketReadyRead()) );
socket->connectToHost( host, port);
QTextStream os(socket);
os << doc.toString() << QChar(4);
return;
}    

void modalForm::socketReadyRead()
{
QString xml;
while ( socket->canReadLine() )   xml += socket->readLine();
        qWarning(xml);  
socket->close();
this->close();
}

то получаем то что нужно (в xml содержится ответ сервера)
как переделать этот код что бы он работал синхронно ?
то есть как заставить работать 1 ый вариант ?
Записан
Sergeich
Гость
« Ответ #1 : Июль 25, 2005, 16:35 »

Если тебе нужен синхронный сокет - юзай QSocketDevice
Записан
Stinky
Гость
« Ответ #2 : Июль 29, 2005, 10:18 »

Можно попробовать использовать socket->socketDevice()

Код:
socket->socketDevice()->setBlocking(true);
// Синхронная работа с сокетом
socket->socketDevice()->setBlocking(false);
Записан
Sir_J
Гость
« Ответ #3 : Июль 30, 2005, 16:37 »

Спасибо
P.S не работает Грустный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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