gpt4 book ai didi

c++ - QUdpSocket 不发出 readyRead() 信号

转载 作者:行者123 更新时间:2023-11-28 07:01:51 27 4
gpt4 key购买 nike

我遇到了 QUdpSocket 的问题。信号 readyRead() 似乎从未发出过。因此,我决定创建 QTimer 并检查套接字读取队列的状态。这样我确保套接字正常工作(bytesAvailable() 显示字节数)并且信号/插槽机制也在工作(发生 timeout() 信号)。但是为什么 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;
}

最佳答案

如果在处理第一个数据报时有更多数据可用,就会出现此问题。将其添加到插槽中,它应该可以正常工作:

int readCount;
while (udpSock->hasPendingDatagrams())
{
readCount = udpSock->readDatagram(buffer, 4096);
cout << "readCount = " << readCount << endl;
}

关于c++ - QUdpSocket 不发出 readyRead() 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22327851/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com