問題タブ [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++ - QUdpSocket: プログラムは送信するが受信しない
に問題がありQUdpSocket
ます。UDP プロトコルを使用してデータを送受信する簡単なプログラムを作成したいと考えています。私はすでに多くの同様のトピックを読みましたが、解決されていません。通信は のみで動作しQHostAdress::LocalHost
、これと同じデータを send として渡しますが、外部にデータを送信したい場合は、具体的なアドレスを設定します。たとえば194.181.161.134
、それは機能しません。つまり、データは送信されますが、受信できません。これは私のコードです:
c++ - Qt5 QUdpSocket は Windows Phone 8.1 で動作しませんか?
Windows Phone で QUdp データグラムを受信できますが、何も送信できません。送信されたデータグラムは、ネットワーク上のどのデバイスにも表示されません。設定しました
マニフェスト ファイルで。binding はエラーを報告せず、
書き込まれた正しいバイト数を返します(すべてのエラー信号は「デバッグスロット」に接続されていますが、誰もトリガーしなかったため、「writeDatagram」でエラーはありません)が、ネットワーク上の他のデバイスでそれらを読み取ったり取得したりできません。まったく同じコードが Android、Linux、さらには Windows デスクトップ (データグラムの送受信) でも完全に実行されるため、非常にイライラします。データグラムが Windows Phone を終了するのを妨げているのは何ですか?
Qt5.3.2、Qt5.4.0 & 5.4.1 でテスト済み - 同じ問題!
c++ - Qt QAudioInput 一定数のサンプルを送信する方法
Qt アプリケーションから udp プロトコルを使用して他のデバイスにオーディオ ストリームを送信しようとしています。私の問題は、ターゲットデバイスが受信するすべてのパケットに対して一定数のサンプル (私の場合は 320) を必要とすることです。そのためには、サウンドをキャッチするために使用する QAudioInput オブジェクトの setBufferSize 関数を使用する必要があると思いますが、QAudioInput オブジェクト全体に関するドキュメントは非常に奇妙で貧弱です。送信するサンプルの数を制御するにはどうすればよいですか? ありがとうございました。
これは私がストリームを送信する方法です:
これはQByteArrayの方法です:
c++ - datastream を使用して char を QbyteArray にコピーすると、余分なバイトが含まれます
問題の概要:
OS : Ubuntu
qtユーティリティを使用してリモートマシンからビデオデータを受信し(リモートマシンはgstreamerを使用してライブデータを送信しています)、そのデータをポート5000に書き込みます.
ポート 5000 はすでに別の gstreamer ユーティリティにバインドされています。このユーティリティは、ポート 5000 をリッスンし、データをビデオ ストリーミングに変換します。明らかに物事は正確に機能しておらず、ビデオを見ることができません。だから私は2つの質問があります:
1) Qt ユーティリティでは、ポートが gstreamer ユーティリティにバインドされていますが、ポート 5000 に書き込むことは合法ですか。
2) サードパーティのライブラリとその API を使用して、外部ソースからデータを受信しています。データは文字の配列に格納されます。それをqbytearrayに変換すると、qbytearrayはcharバッファと同じサイズになります。例
しかし、QDataStream を使用すると、QbyteArray は 4 バイト余分に取得されます。以下に示すコード
QbyteArray が余分な文字を取得した理由を知りたいのですが、データをシリアル化してポート 5000 に転送する必要がありますか?
c++ - QUdpSocket書き込みバッファフル?
Windows XP で QUdpSocket を使用してデータを送信しています。10 秒ごとに、それぞれ約 50 バイトのパケットを約 100 から 500 送信しています。毎回少量のパケットを送信するホストに問題はありません。10 秒ごとに 500 パケット以上を送信するホストで問題が発生します。
writeDatagram(...) を使用すると、「データを送信できません」というエラー メッセージが表示されました。500 パケットの大部分は送信されますが (wireshark でチェック)、一部はまったく送信されません (最後のパケット)。
ソケットの書き込みバッファがいっぱいになったときに問題が発生すると思います。しかし、これをQtでチェックして、バッファがさらにデータを書き込む準備ができるのを待つ方法がわかりません。
Qt がなければ、select(...) メソッドを使用して、ソケットの準備ができているかどうかを確認し、一度に 1 バイトずつ送信できます。しかし、どうすればそれを QUdpSocket で確認できますか。そのような方法はありません。また、bytesToWrite() は常にゼロを返すようです。
スリープして再試行できることはわかっていますが、この方法は信頼できるとは思いません。メソッドは他の理由で失敗する可能性があります。OS にはこれに適した方法があり、select() と呼ばれます。
ご協力ありがとうございました。
c++ - QUdpSocket と QDatastream を使用して UDP データグラムを送信する
プログラムは .txt ファイルを送信できます。ただし、他のファイルタイプは破損します。フレームを保存するデータ型と関係があると思います。長い投稿で申し訳ありませんが、どこに問題があるのか わかりません。
私はQTだけでなくC ++も初めてです。QUdpSocket を使用して、ネットワーク経由でファイルを別のコンピューターに送信する必要があります。このコンピューターは、データグラムを正しい順序で再構築し、ファイルとして保存する必要があります。(QFile は、シーケンス番号ヘッダーを使用してセグメントに分割し、これらの番号に従って再構築する必要があります)。セグメントは、シーケンス番号とともに QByteArray 配列に格納されます。
次に、QByteArray 配列が qudpsocket 経由で送信されます
再構成コードは次のように機能します
すべてのフレームが受信された後
c++ - UDP経由でQVectorを交換することは可能ですか?
QUdpSocket 2 または 3 QVector 経由で送信したい:
- 1 つの QVector < bool >
- 1 つの QVector < int >
- 1 つの QVector < float >
それを行うことは可能ですか?
c++ - UDP 経由で構造体を送信する
QUdpSocket 経由で構造体を送信したいと思います。と を使用する必要があることはわかっていますが、レシーバーが Qt を使用QDataStream
しQByteArray
ないため、使用できません。
私は多くのことを試しましたが、適切に機能しているように見えるものは見つかりません。
私の構造体は次のようになります:
それを適切に行うにはどうすればよいですか?