Работа с потоками |
Здравствуйте, гость ( Вход | Регистрация )
Работа с потоками |
Гость_zayac_val_* |
30.1.2009, 20:05
Сообщение
#1
|
Гости |
Помогите разобраться с потоками.
Хочу написать клиент-серверное приложение, и по задумке каждый вновь создаваемый сокет должен работать в отдельном потоке. Работа потока начинается с выполнения функции run(), в котрой я и создаю свой сокет: CODE class Socket : public QTcpSocket { Q_OBJECT public: ClientServer *window; Socket(int sockDeskr,QObject *parent); public slots: void read(); void read_error(); void deleteLater(); void write(); }; class Thread : public QThread { Q_OBJECT public: ClientServer *window; Thread(int sockDeskr,QObject *parent); void run(); private: int sockDeskr; }; Socket::Socket(int sockDeskr,QObject *parent):QTcpSocket(parent) { window=(ClientServer *)parent; this->setSocketDeskriptor(sockDeskr); connect(this,SIGNAL(readyRead()),this,SLOT(read())); connect(this,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(read_error()) ); connect(window->pushButton_3,SIGNAL(clicked()),this,SLOT(write())); } void Socket::read() { QByteArray bar=this->readAll(); QString str; str.append(bar); window->textEdit->setText(str); } void Socket::read_error() { QMessageBox *mb=new QMessageBox(this); mb->setText(codec->toUnicode("Ошибка сокета: ")+this->errorString()); mb->exec(); } void Socket::write() { QByteArray bar; bar.append(window->textEdit->toPlainText()); this->write(bar); } /////////////////////////////////////////////////////////<-----------Thread-------->///////////////////////// void Thread::Thread(int sockDeskr,QObject *parent) { this->sockDeskr=sockDeskr; window=(ClientServer *)parent; } void Thread::run() { Socket *soc=new Socket(sockDeskr,window); } Подскажите сокет при такой реализации будет работать в отдельном потоке, или я в потоке просто создаю экземпляр сокета и не более, и для правильной работы мне надо реализовывать слоты для сокета в классе Thread. |
|
|
Текстовая версия | Сейчас: 13.1.2025, 18:37 |