問題タブ [qudpsocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - シリアル化せずに UDP 経由で構造体を送信する
構造体を送信したい:
QUpdSocket 経由。
連載はしたくありません(なのでノーアンサーでお願いしQDataStream
ます…^^)。
これはうまくいきますか?:
c++ - QUdpSocket 高速メッセージ読み取り
みんな!
QUdpSocket と readyRead シグナルの操作に奇妙な問題があります。思ったように機能していないと言えます。
QUdpSocket を作成してポートにバインドし、readyRead シグナルをスロットに接続して、以下のように保留中のデータグラムをすべて読み取ります。
そして私のreadBuffersコード
Qt::QueuedConnection を使用して問題を解決したと思っていましたが、今日、プロジェクトに別のウィジェットを追加し、100 ミリ秒ごとに更新しました。方法はわかりませんが、スロットが 2 秒後に信号を出さなくなりました。
タイマー間隔または送信データ レートを 1 秒に変更すると、すべて問題ありません。
すべてのクラスとウィジェットはメイン プログラムのスレッドにあり、別のスレッドは使用していませんが、使用する必要があるようです。
では、Qt eventloop によってシグナルがドロップされたのはなぜですか?
ソケットの状態を確認しましたが、バウンド後に変化しませんでした。
前もって感謝します
qt - QUdpSocket クライアント サーバー リモート ホストに接続できません
私の質問に関するスレッドはほとんど見たことがありませんが、それでも問題を解決できないようで、返信も十分ではありません。タスクは次のとおりです。私は 2 台の PC を持っています。1 台は単純なテスト データを含む 100 個の udp パケットを送信する必要があり、もう 1 台のマシンはデータグラムを読み取る必要があります。私のコードは次のとおりです。
サーバー:
m_socket.udp = 新しい QUdpSocket(これ);
つまり... まず、マシン 1 の IP へのバインドが失敗します。その IP を指定してはなりません。
クライアントは単純です:
したがって、Wireshark で表示されるクライアント コードは、私のサーバー マシンに送られます。しかし、私のサーバーQtコードは私を失敗させます。ここで何か助けはありますか?
qtcpserver - QUdpSocket を使用して QTcpServer に接続できますか?
私はネットワーキングの世界に非常に慣れていないので、現在 newConnection シグナルで動作している QTcpserver を持っていますが、 QTcpServer で QUdpSocket を使用できるかどうか疑問に思っていましたか? これはまったく可能ですか?
c++ - 非GUIスレッドでQUdpSocketを適切に作成するには? Readyread が発行されない
以下をラップするネットワーク ライブラリを作成していますQUdpSocket
。
- 新しい を作成します
QUdpSocket
。 readyRead
その信号に接続します。readDatagram
が発生したときに呼び出しますreadyRead
。
Qt GUI アプリケーションからライブラリを使用すると、すべて正常に動作します。
別のユーザーが Qt GUI アプリケーションの外部で使用されるライブラリをインクルードすると、問題が発生します。
彼は を呼び出しますaddConnection
(ソケットを作成し、 で connect を呼び出しますreadyRead
) 。
が呼び出されるスレッドaddConnection
は非 Qt です。
はaddConnection
正常に終了したように見えますが、readyRead
は決して出力されません。
read を呼び出すと (noreadyRead
が発行された場合でも)、データグラムの読み取りが成功します。
機能しなかった修正:
UDP ソケット スレッドを this->thread に移動する
/li>void を呼び出して問題をシミュレートしようとしました
これにより、ユーザーが私のライブラリで経験したのと同じ症状が発生しました。つまり、
readyRead
が出力されませんでした。QSignalSpy
- 信号でスパイを起動しましたreadyRead
; ソケットから直接データを読み取ることはできましたが、カウンターはゼロのままでした。メイン スレッドでソケットが初期化されている場合、スパイは有効な結果 (進行) を返しました。
私の質問:
- 私は何が欠けていて、間違っていますか?
- メインの GUI スレッドで作成されていない場合でも、発行する最も簡単な方法は何ですか?
readyRead
GUI なしまたは Qt スレッドの外部で動作するサンプルは見つかりませんでした。