問題タブ [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.
root - qudpsocket マルチキャスト ルート権限
QUdpSocket を使用して単純な udp マルチキャスト サーバーを作成しましたが、root 権限でアプリを実行した場合にのみ writedatagram 関数が機能します。これは正常ですか?痛いです。さらに、iperf (たとえば) は root 権限がなくても機能するようです。私は何を間違っていますか?
プラットフォームは Ubuntu 12.04 です 3.2.0-56-generic x86_64 私のコードはとてもシンプルです...
このコードは、root 権限について言及していない QT 独自のサンプル コードに基づいています。
IP アドレスを非ブロードキャスト/マルチキャスト アドレス (例: 192.168.1.18) に変更するだけであれば、root 権限は必要ありません。
c++ - C++/Qt での UDP サーバーとクライアントのチャット
Qtを使ってチャットプログラムを書こうとしています。半分は完成していますが、いくつか問題があります。
まず、lineedit で書いたメッセージをクライアントに送信しようとすると、エラーが発生します。ですQString
が、writeDatagram
のみが を送信しQByteArray
ます。QString
に変換する方法はいくつかありますがQByteArray
、より良い解決策を探しています。を使用する必要があると思いますconnectToHost()
がread()
、write()
機能しません。
2 つ目の主な問題は、メッセージを継続的に送受信できないことです。明らかに、これはまだ発生していませんが、Qt コンソールでテストしたところ、そこでも機能しなかったため、何か問題があることはわかっています。
私は GUI とソケット プログラミングに慣れていないので、このトピックを投稿する前にたくさん検索しました。
更新: 最初の問題は解決しましたが、チャット アプリケーションのように動作するどころか、UDP パケットが送受信されなくなりました。
更新: 何が問題なのかがわかり、解決しました。コードには 2 つのQUdpSocket
オブジェクトが必要でした。コードも更新しました。これで完全に機能します。他の意見があれば、ぜひ聞いてみたいと思います。
サーバ:
クライアント:
c++ - Qt QUdpSocket: readyRead() シグナルと対応するスロットが想定どおりに機能しない
私の短いQUdpSocket
例が機能しない理由を見つけるのに問題があります。ポート 2007 で 192.168.2.66 にある組み込みデバイスの読み取りと書き込みに UDP ソケットを 1 つだけ使用する予定です。デバイスは常にポート 2007 で送信者に応答します。UDP ターミナル ソフトウェアでデバイスをテストしたところ、前述のとおりに動作しました。そこで、デバイスの管理に必要な機能を組み込む単純なクラスを設計しました。
問題は Open メソッドにあると思います。
connect() に Qt 5 構文を使用しました。m_strHost
値は「192.168.2.66」で、m_wPort
2007 です。
私の Write メソッドは非常に単純です ( #if 0 内の部分は、ソケットがデータを受信したかどうかを確認するために追加されました)
そして、これは私のテスト receive() メソッドです...シグナルスロットが機能するかどうかを確認するためだけに書きました:
何が悪いのかわかりません.. QtでUDPソケットを1つだけ使用して読み書きできないという投稿をいくつか見つけました(QtはBSDソケットを使用するため、可能であるはずです)が、私の例は提案された解決策のように見えるので、何が機能していないのか本当にわかりません。
c++ - QUdpSocket、192.168.1.x を使用しているときに 192.168.0.x からのブロードキャスト メッセージを読み取るにはどうすればよいですか
192.168.1.xxx にいるときに、192.168.0.xxx からいくつかのテスト ブロードキャスト メッセージをキャプチャしようとしています
。192.168.0.1 から 192.168.0.255 にブロードキャスト テスト パケットを送信するデバイスがあります。
私のアプリケーションは 192.168.1.70 上にあり、両方に同じポート番号を使用してブロードキャスト UDP を受信しようとしています。
私は WireShark を実行しており、デバイスからの正しいパケットが ...0.1 から ...0.255 に移動していることを確認できます。ただし、... 1.70 からのコードでは取得できません。
これは、... 1.70 で使用している受信サンプル テスト コード ビットです。
c++ - QUdpSocket が readyRead() シグナルを発行しない
で問題に直面しましたQUdpSocket
。信号readyRead()
は決して放出されないようです。そこで、QTimer
ソケット読み込みキューを作成して状態を確認することにしました。そうすれば、ソケットが適切に機能していること(bytesAvailable()
バイト数が表示される)と、シグナル/スロットメカニズムも機能していること(タイムアウト()シグナルが発生したこと)を確認できました。しかし、なぜreadyRead()
放出しないのですか?ありがとう。
Qt 5.1
qt - QUdpSocket setSockOpt
ソケットでこのフラグを使用する古いコードがいくつかあります。
この場所を QUdpSocket を使用するように変更するにはどうすればよいですか? QUdpClass にアナログの setsockopt が見つかりません。QAbstractSocket は、4 つのバリアント フラグ (列挙型) のみを許可する setSocketOption を提供します。Linux版でのみ必要なので、ネイティブ関数があればOKです。
python - Qt Linux マシン上の UDP ソケットへの書き込みと Windows Python を使用したソケットからの読み取り
=========== 更新: ===========
現在、ブロードキャスト IP 10.6.0.3 とそれ以上のポート 57890 を使用しています。Windows ネットワーク モニターでトラフィックを確認できますが、Python でそれを読み取ることができません。
==============================
Qt と QUDPSocket を使用して、IP アドレス 10.6.0.2 の UDP ソケットに「hello」メッセージを書き込む Linux マシンがあります。Python を使用して「こんにちは」メッセージを読みたい Windows マシンもあります。私の Qt コードから、データが書き込まれていることがわかりますが、Windows 上の Python プログラムは「データを待機中」のままです。Windows マシンは実際に 10.6.0.2 に ping を実行できます。私は何を間違っていますか?
テスト シーケンス:
Qt 出力:
Qt コード:
Python プログラム:
qt - ActiveX (ActiveQt) コントロールでシグナルを使用する方法
Qt の activeQt/wrapper サンプル コードを変更して、Udp パケットを受信できるようにしようとしています。ActiveX コントロールをビルドして C# frameWindowApplication に配置したい
Q_OBJECT マクロが不足しているため、接続/信号が機能していないと思いますが、Q_OBJECT マクロのコメントを外すと、エラーコードが表示されます。
このパケットを適切に受信する方法を誰か助けてもらえますか?