2017-08-07 8 views
1

私はサーバーアプリケーションに接続したい(つまりQWebSocketServer)単純なクライアントアプリケーション(QWebSocketを使用しています)を持っています。QtでQWebsocketタイマーを変更するには

webSocketServerへの接続をダウン/使用できない状態にすると、webSocketは30秒後に「disconnectd」信号を発します。

これは、サーバーがダウンしている/使用できないことを理解するのに役立ちますので、問題についてユーザーに再試行または警告することができます。

クライアントとサーバーの間のリンクが失敗した場合、同じことが起こります。すなわち、webSocketへの書き込み(sendBinaryMessage)の後、切断された信号が30秒後に発せられる。

デフォルトタイマーはQWebSocketで、修正方法は何ですか?

このような情報やドキュメントはどこにありますか? webSocketのQtドキュメントには、この動作はまったく言及されていません!コードを読んだり、... ...! QWebSocketから事前

答えて

0

ありがとう:

このクラスは、QAbstractSocket後にモデル化しました。

QAbstractSocketは、QIODeviceから継承します。

これらのクラスのドキュメントには、タイムアウトに関する情報があります。 具体的には、デフォルトの30秒間のポップアップが表示されます。

もう1つの場所はQObjectのドキュメントです(QWebSocketはそれを継承しています)。おそらく、QObjectのタイマー関連の仮想関数をオーバーライドすることで、何らかの形でこれらのメカニズムの間に入り、おそらくタイムアウトを変更することができます。

大変申し訳ございません。

0

これらのタイマーのいずれかがQtの一部であることは疑いありません。これらのタイマーは、基礎となるオペレーティングシステムのTCP/IPの実装の一部として存在します。接続がタイムアウトするのを待っているソケットは、リモートエンドが応答しないと、最終的に悪くなります。妥当な時間が経過しても送信されたデータが確認応答でない場合と同じです。

Qtはすべて非同期であり、何かが発生したときに通知するために信号とスロットを利用します。これは、タイムアウトを短くしたい場合、最も簡単な方法は、QAbstractSocketと並行して実行されるQTimerを使用することです。ソケットがその応答を通知する前にタイマーがタイムアウトすると、適切な処置を取ることができます。

これに失敗すると、TCP接続のさまざまなタイムアウトを好きなように設定できるいくつかのソケットオプションが存在する可能性があります。

関連する問題