で問題に直面しました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;
}