我的多线程客户端为什么无法连接
我的程序大体框架是这样的,一个界面widget,在widget建立线程,在线程中新建一个SOCKET,并实现收发数据的功能。我的程序:
thread.h
#ifndef THREAD_H
#define THREAD_H
#include <QThread>
#include <QTcpSocket>
#include <QtNetwork>
class Thread : public QThread
{
Q_OBJECT
public:
Thread(QObject *parent);
void newConnect();
QString IP;
void sendMessage();
protected:
void run();
private:
QTcpSocket *tcpSocket;
QString message;
};
#endif // THREAD_H
thread.cpp
#include "Thread.h"
#include <QtGui>
#include <QtNetwork>
Thread::Thread(QObject *parent):
QThread(parent)
{
}
void Thread::newConnect()
{
tcpSocket->abort();
tcpSocket->connectToHost(IP,6666);
}
void Thread::sendMessage()
{
QTcpSocket *clientConnection = tcpSocket;
connect(clientConnection,SIGNAL(disconnected()),clientConnection,SLOT(deleteLater()));
clientConnection->write("Hello world\0");
}
void Thread::run()
{
tcpSocket = new QTcpSocket;
newConnect();
sendMessage();
}
wigdet.h中关于线程的
private:
Thread *thread;
widget.cpp中
idget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
thread = new Thread(this);
thread->IP="127.0.0.1";
thread->start();
}
但是无法与服务器进行连接,如果不放在线程中,就可以连接,为什么? --------------------编程问答-------------------- 我终于明白了,因为run函数里面没有加exec(); --------------------编程问答--------------------
原来如此啊。。 --------------------编程问答--------------------
对滴 我也刚写了篇类似的博客说exec() 在socket 通信中
补充:移动开发 , Qt