我创建了一个基本的多线程 TCP 服务器,我想向所有连接的客户端发送数据。我已将服务器类的信号连接writing(QByteArray)
到套接字线程的插槽writeToSocket(QByteArray)
,但是当我尝试通过发出上述信号来写入该套接字时,出现分段错误。就像我无法访问任何套接字对象的(这是线程的属性)方法一样。
我的简化代码:
void MyServer::incomingConnection(int handle)
{
ConnectionThread *thread = new ConnectionThread(handle, this);
connect(this, SIGNAL(writing(QByteArray)), thread, SLOT(writeToSocket(QByteArray)));
// Some more code necessary for thread to work
}
void RoleNetServer::WriteToAll(QByteArray data)
{
emit writing("test");
}
然后,在线程的源文件中:
void ConnectionThread::writeToSocket(QByteArray data) // a slot
{
this->socket->write(data);
}