我正在尝试使用 QLocalServer 作为 ipc 解决方案。qt的版本是4.6
这是我的 main.cpp:
int main(int argc, const char*argv[]) {
QServer test();
while (true) {
}
}
这是我的 QServer 课程:
class QServer : public QObject
{
Q_OBJECT
public :
QServer ();
virtual ~QServer();
private :
QLocalServer* m_server;
QLocalSocket* m_connection;
private slots:
void socket_new_connection();
};
QServer::QServer()
{
m_server = new QLocalServer(this);
if (!m_server->listen("DLSERVER")) {
qDebug() << "Testing";
qDebug() << "Not able to start the server";
qDebug() << m_server->errorString();
qDebug() << "Server is " << m_server->isListening();
}
connect(m_server, SIGNAL(newConnection()),
this, SLOT(socket_new_connection()));
}
void
QServer::socket_new_connection()
{
m_connection = m_server->nextPendingConnection();
connect(clientConnection, SIGNAL(readyRead()),
this, SLOT(newData(clientConnection)));
}
这一切都可以编译,但是在运行时,当我尝试连接 newConnection() 时,我得到一个 QSocketNotifier: Can only be used with threads started with QThread error。
我曾尝试将整个事情包装在 QThread 中,但我仍然遇到同样的错误。
谁能解释我做错了什么或者为什么甚至涉及一个线程?