【发布时间】:2014-03-11 13:55:42
【问题描述】:
我遇到了QUdpSocket 的问题。信号readyRead() 似乎永远不会发出。所以,我决定创建QTimer 并检查套接字读取队列的状态。这样我确保套接字正常工作(bytesAvailable() 显示字节数)并且信号/插槽机制也在工作(发生超时()信号)。但是为什么readyRead() 不发射呢?谢谢。
Qt 5.1
QString EthernetListener::listen()
{
udp_socket = new QUdpSocket(this);
connect(udp_socket, SIGNAL(readyRead()), this, SLOT(process_messages()));
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(dummy_slot()));
timer->start(1000);
bool res = udp_socket->bind(QHostAddress::Any, 1947, QUdpSocket::ShareAddress);
if (!res)
return QString("Не удалось подключиться к хосту").toUtf8();
return QString("Идет прослушка сети. Хост: ");
}
void EthernetListener::dummy_slot()
{
int test = udp_socket->bytesAvailable();
}
void EthernetListener::process_messages()
{
bool bp = true;
}
【问题讨论】:
标签: c++ qt sockets qtnetwork qudpsocket