Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] приконектить сервер к клиентам


Автор: Веталька 27.2.2011, 16:50
Доброго времени суток, надо сделать сервер под некоторые устройства, к устройству в свою очередь надо конектится самому, как с один работать понятно, но ясно что их количество может быть N, как правильно определят с какого устройства пришел запрос, ну и как правильно к ним подключаться.
для одного устройства делаю так
Код

    QString qHost = "192.168.*.*";
    qint16 qPort = ****;
    QTcpSocket *tcpSocket = new QTcpSocket(this);
    tcpSocket->connectToHost(qHost, qPort, QIODevice::ReadWrite);
    connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(onRead()));

Автор: borisbn 27.2.2011, 21:29
Цитата(Веталька @  27.2.2011,  16:50 Найти цитируемый пост)
как правильно определят с какого устройства пришел запрос

спрашивать у сокета http://doc.qt.nokia.com/4.7-snapshot/qabstractsocket.html#peerAddress и http://doc.qt.nokia.com/4.7-snapshot/qabstractsocket.html#peerPort

Автор: bsa 27.2.2011, 21:29
Веталька, используй QObject::sender()

Автор: Веталька 27.2.2011, 21:30
ок, спс, а вообщем как ето дело умней организовать?

Добавлено через 20 секунд
саму структуру

Добавлено через 2 минуты и 50 секунд
QObject::sender()
он разве даст мне точный адрес сокета который послал сигнал?

Автор: bsa 27.2.2011, 22:09
Веталька, он тебе даст указатель на тот QObject, который послал сигнал. Затем делаешь qobject_cast<QTcpSocket*> и получаешь указатель на тот сокет, который послал сигнал.

Автор: Веталька 27.2.2011, 22:11
Цитата

Затем делаешь qobject_cast<QTcpSocket*> и получаешь указатель на тот сокет, который послал сигнал.

ясно, пасибо, пока тему можно закрывать smile 

Автор: bsa 28.2.2011, 00:48
Веталька, ну так пометь тему решенной

Автор: Веталька 28.2.2011, 00:49
да вроде уже помечал раз

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)