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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QList и QTcpSocket  (Прочитано 2627 раз)
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 того соккета от которого пришло сообщение?

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

В заранее спасибо.
« Последнее редактирование: Октябрь 02, 2012, 14:17 от tall32 » Записан
mutineer
Гость
« Ответ #1 : Октябрь 02, 2012, 14:18 »

Посмотри на метод sender()
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #2 : Октябрь 02, 2012, 14:19 »

В слоте у тебя есть sender (), который указывает на сокет, испустивший сигнал.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
tall32
Гость
« Ответ #3 : Октябрь 02, 2012, 14:24 »

Спасибо)))сегодня попробую)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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