Доброе время суток ув. Коллеги!
суть вопроса следующая: разрабатываю клиент-серверное приложение, требуется сделать приложение смешанного типа (как принимать запросы и выдавать ответы, так и генерировать свои запросы при некоторых условиях). Данные должны течь используя TCP протокол. Пока-что хотелось бы реализовать банальный сервер: ставлю сервер на прослушивание, получаю новое соединение, прослушиваю запрос - выдаю ответ, прослушиваю запрос - выдаю ответ и т.д. (соединение не рвём). Пока получается сделать следующее: ставлю сервер на прослушивание, получаю новое соединение, прослушиваю запрос - выдаю ответ, рву соединение (если этого не сделать - ответ не отсылается, по какой-то неведанной мне причине). может быть кто сталкивался с такой проблемой, где тут собака зарыта? :-)
зы: Qt Version 4.6.2, ОС(сервера разрабатываемого мной) - Windows ХР(возможны варианты кроссплатформенности), клиент - любая ОС, в том числа внешнее устройство с жестко закодированной логикой.
я сейчас делаю примерно так:
void myServer::newConnectionBegin()
{
QTcpSocket *clientConnection = this->serv.nextPendingConnection();
QByteArray readedByts;
if(clientConnection->waitForReadyRead(-1))
{
readedByts = clientConnection->read(requests.getMaximumSizeOfCommands());
std::cout<<"Request is:\t";
for (int i=0;i<readedByts.size();i++)
{
printf("%02X ", readedByts.at(i));
}
std::cout<<std::endl;
}
QByteArray responseCommand = GenerateResponse(readedByts);
if(responseCommand.size() >0 )
{
clientConnection->write(responseCommand);
std::cout<<"Response is:\t";
for(int i =0;i<responseCommand.size();i++)
{
printf("%02X ", responseCommand.at(i));
}
std::cout<<std::endl;
}
else
{
std::cout<<"Response is:\tUNKNOW_REQUEST"<<std::endl;
}
clientConnection->disconnectFromHost();
}
в конструкторе делаю коннект:
connect(&serv, SIGNAL(newConnection()), this, SLOT(newConnectionBegin()));