У меня возникли проблемы с QTcpSocket, это не испуская никаких сигналов:/Почему QTcpSocket не излучает сигналы?
void NetworkInstance::run()
{
m_pSocket = new QTcpSocket();
connect(m_pSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(socketError()));
connect(m_pSocket, SIGNAL(hostFound()), this, SLOT(socketHostLookupDone()));
connect(m_pSocket, SIGNAL(connected()), this, SLOT(socketConnected()));
connect(m_pSocket, SIGNAL(disconnected()), this, SLOT(socketDisconnected()));
connect(m_pSocket, SIGNAL(readyRead()), this, SLOT(socketReadyRead()));
QSettings s;
s.beginGroup("network");
emit log(QString("Connection to: ").append(s.value("host").toString()).append(":").append(s.value("port").toString()));
m_pSocket->connectToHost(s.value("host").toString(), s.value("port").toInt());
s.endGroup();
exec();
}
Это мой код, я не вижу в ней ошибку, но не подключенный сигнал излучающая (hostFound, подключено , и т.д.). На сервере я вижу, что соединение установлено и отправлено данные, но ничего не происходит на стороне клиента. NetworkInstance расширяет QThread.
Если вы подклассов QThread, «вы делаете это неправильно»: http://blog.qt.digia.com/blog/2010/06/ 17/youre-doing-it-wrong/ – TheDarkKnight
Вам вообще не нужен QThread! Вы можете безопасно запустить это в основном потоке, после чего QTcpSocket работает асинхронно. –
Мне нужен QThread, я делаю некоторую тяжелую обработку с полученными данными (и да, можно было бы поместить обработку в QThread самостоятельно, но это проще). У меня есть один сокет на поток, он соответствует моим потребностям. Однако принятый ответ - это решение. – Paladin