Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania i odpowiedzi
Viewing all articles
Browse latest Browse all 83164

Problem z funkcja read()

$
0
0

Witam, mam problem, kiedy odczytuje dane z serwera są one nie poprawne, ma ktoś pomysł co w moim kodzie jest nie tak?

cClient::cClient(QObject *parent) :
    QObject(parent),m_IP("127.0.0.1"),m_port(10000),m_receivedCounter(0)
{
    
    m_timerId=startTimer(1000);
}
void cClient::check()
{
    int N=getMessagesCount();
    for(int id=m_receivedCounter+1;id<N;id++)
    {
        QString msg=getMessage(id);
        emit newMessageReceived(msg);//wysyła sygnał
        m_receivedCounter=id;
    }
}
void cClient::timerEvent(QTimerEvent *event)
{   
    if(event->timerId()==m_timerId)
    {
        check();
    } 
}
QString cClient::getMessage(int id)//zwraca wiadomosc o danym id
{
    QString message;
    if(connect2Server())
    { 
        sRamka request,response;
        request.id=3; //wysylanie do serweru komendy o id = 3
        request.rozmiar=id;
        m_socket.write((char*)&request,sizeof(request));
        m_socket.waitForBytesWritten();
        m_socket.waitForReadyRead();       
        m_socket.read((char*)&response,sizeof(response));
        response.rozmiar=sizeof(response.tekst); 
        message=QString::fromUtf8(response.tekst);
    }
    m_socket.disconnectFromHost();
    return message;
}
void cClient::sendMessage(QString message)
{
    ++al;
    sRamka request,response;
    if(connect2Server())
    {
        request.id=1;
        strcpy(request.tekst,"napis do wyslania");
        m_socket.write((char*)&request,sizeof(request));
        m_socket.waitForBytesWritten();
        m_socket.waitForReadyRead();
        m_socket.read((char*)&response,sizeof(response));
        qDebug()<<request.tekst;
        qDebug()<<response.tekst;
        switch(response.id)
        {
        case 0: //server sent ID 0
            break;
            // case -1: //server sent ID -1
        }
    }
    qDebug()<<request.tekst;
    qDebug()<<response.tekst;
    m_socket.disconnectFromHost();    
}
int cClient::getMessagesCount() //zwraca liczbe komunikatow na serwerze. Narazie zmienna globalna jak będzie działać to poprawię 
{
    return al;
}

 


Viewing all articles
Browse latest Browse all 83164