1

TCPソケットでqsocketnotifierを使用しようとしていますが、問題は、ソケットに読み取るデータがない場合でも、qsocketnotifierが「アクティブ化された」信号を継続的に起動することです。「ブロッキング」モードと「非ブロッキング」モードの両方で、ソケットでこれを試しました。動作は同じです。誰かがこれをいつでも見ましたか?以下のコードを貼り付けています。

 QSocketNotifier *notifier = new QSocketNotifier(gwSocketId, QSocketNotifier::Read, this);
    connect(notifier, SIGNAL(activated(int)), this, SLOT(processClientEvents()));
4

2 に答える 2

4

QSocketNotifierドキュメントから:

このクラスは QSocketNotifier と呼ばれますが、通常はソケット以外のタイプのデバイスに使用されます。QTcpSocket と QUdpSocket はシグナルを介して通知を提供するため、通常は QSocketNotifier を使用する必要はありません。

QTcpSocketから継承しQIODeviceているため、シグナルはreadyRead()です。この信号はあなたが求めているものだと思います。

于 2012-07-12T12:50:31.857 に答える