crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Работа с потоками
Гость_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.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 19:19