Russian Qt Forum

Qt => Вопросы новичков => Тема начата: tall32 от Октябрь 02, 2012, 14:13



Название: QList и QTcpSocket
Отправлено: tall32 от Октябрь 02, 2012, 14:13
Доброго времени суток.

Есть простенькие сервер:

Код:
....................
QList <QTcpSocket *> _clients;
QTcpSocket *cl=TCPserver->nextPendingConnection();

_clients << cl;
....................
connect(_clients[_clients.count()-1], SIGNAL(readyRead()), this, SLOT(on_ClientRead()));

....................

Что бы получить сообщение от клиента находящегося первым в списке я могу пользоваться таким кодом:

Код:
void MainWindow::on_ClientRead()
{
    quint16 blockSize;

    QDataStream inp(_clients[0]);
    inp.setVersion(QDataStream::Qt_4_2);

    for(;;){
        if (!blockSize){
            if (_clients[0]->bytesAvailable() < sizeof(quint16)) {
                break;
            }
            inp >> blockSize;
        };
        if (_clients[0]->bytesAvailable() < blockSize) {
            break;
        };
        QString s;
        inp >> s;
        ui->textEdit->append(s);

        blockSize = 0;
    }

};

Вопрос:
Как мне определить от какого клиента мне пришло сообщение?
Как вернуть номер из QList того соккета от которого пришло сообщение?

хотя бы просто скажите в какую сторону капать))).....
Документацию смотрел, вполне возможно что то упустил)..так что можете ткнуть или намекнуть где примерно и что я проглядел)

В заранее спасибо.


Название: Re: QList и QTcpSocket
Отправлено: mutineer от Октябрь 02, 2012, 14:18
Посмотри на метод sender()


Название: Re: QList и QTcpSocket
Отправлено: Пантер от Октябрь 02, 2012, 14:19
В слоте у тебя есть sender (), который указывает на сокет, испустивший сигнал.


Название: Re: QList и QTcpSocket
Отправлено: tall32 от Октябрь 02, 2012, 14:24
Спасибо)))сегодня попробую)