問題タブ [qtcpsocket]

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.

0 投票する
1 に答える
3889 参照

qt - QDataStream および QTcpSocket を介してファイルを読み取り、送信する

私の問題は、変数の内容が常に空であることです。これが私のコードです:

出力:

コンテンツは常に空です

ご協力いただきありがとうございます

0 投票する
1 に答える
5344 参照

timeout - PC側でQt(C++)を使ってオムロンFINSプロトコルを実現【ドライバ】

私はクロスプラットフォームのデスクトップ アプリケーションに取り組んでいます。Qtを使用してC ++で開発し、ソケット( QTcpSocket )を介してPC側のOmron FINS TCPプロトコルドライバーをすでに実装しています。FINS プロトコル経由でレジスタから読み取ると、30 ミリ秒以内に正しい応答を受け取りますが、plc のレジスタに書き込むと、plc から応答がありません - ソケット タイムアウト エラー ( QAbstractSocket エラー コード = 5 )。

レジスタから読み取るためのコード (関数は reg_addr - レジスタのアドレスを受け取り、値を更新します): bool fins_read_reg(int reg_addr,int *value); -->



bool fins_write_reg(int reg_addr,const int value); -->


f - 一時ログ ファイル ポインタ sc - FINS コマンドを送受信する QTcpSocket インスタンス PLC: CP1L-L14DT1-D Ethernet オプション ボード: CP1W-CIF41

メモリ領域指定コード機能:

Multiway ソフトウェアを使用してコマンドをテストしたところ、応答が受信され、値が register に入力されましたが、QTcpSocket とエラーで同じでした。なぜですか? あなたへの私の質問: FINS ドライバーを実行したときに、このような問題が発生したことがありますか? FINS レジスタへの書き込みコマンドが正常に作成されている間、応答がない状況が発生する可能性があるのはなぜですか? はいの場合、克服/修正する方法は?

0 投票する
1 に答える
1089 参照

qthread - QThreads を使用して複数の QTcpSockets に書き込む方法は?

QTcpSockets と QThreads でこの問題に数日間苦労しています。

ポートをリッスンし、nextPendingConnection() を使用して新しいクライアントを作成する QTcpServer があります。これで、クライアントには読み取りと書き込みに使用できる qtcpsocket ができました。

サーバーに 100 のクライアントが接続されているとします。それらの 1 つが全員にメッセージをブロードキャストしたい場合、私のメイン スレッド ( nextPendingConnection() でクライアントを作成する場所) は、100 を超えるクライアントを反復処理し、ソケットで書き込みメソッドを呼び出す必要があります。たとえば、10 人のユーザーが同時にブロードキャストする場合、1000 回の反復を行う必要があるため、クライアント側 (ユーザーがメッセージを受信するとき) に遅延が生じると考えられます。

データを並列で送信できるように、すべてのソケット書き込みを別々のスレッドで行いたいと思います。ソケットが作成されたスレッドから別のスレッドからソケットを呼び出すことはできないことを知っています。多くのスレッドを持つことが良い考えかどうかわからないため、クライアントごとに 1 つのスレッドを使用したくありません。 (さらに、クライアントが切断しない限り、これらのスレッドは常に実行されている必要があります)。

スレッド フォーチュン サーバーの例を読みましたが、データの送信後にソケットが破棄されるため、問題の解決にはなりません。受信メッセージをリッスンする必要があるため(ブロードキャストできるようにするため)、ソケットを破壊したくありません。

私が考えたことの 1 つは、各クライアント (サーバー側とクライアント側) に 2 つのソケットを用意することです。1 つのソケットを読み取り用に保持し、もう 1 つのソケットをスレッド フォーチュン サーバーの例と同じように使用できるようにします。この場合、スレッドプールを使用してタスクの数を制限します (それ以外の場合は、クライアントごとに 1 つのスレッドを使用するのと同じことになります)。

正しい方向を教えてください。または、実際にクライアントごとに 1 つのスレッドを持たずに並列ソケット書き込みを実装する方法についてのヒントを教えてください...?

よろしくお願いします、

セバスチャン

0 投票する
1 に答える
109 参照

network-programming - TCP メッセージングのベスト コンベンション

私はこのメッセージ変換を使用しています: %total_msg_length%|%msg_body% を使用して、tcp ソケット (python/pyqt) を介して文字列データを受信します。これは良い対流ですか、それとも何か他のことを試す必要がありますか?

0 投票する
1 に答える
3302 参照

python - ピクト; サーバーの再起動後、QTcpSocket は常に connectedState になります。

QTcpSocket のサブクラスがあります。そして問題は:サーバーに初めて接続するとき-すべて問題ありませんが、ソケットが接続された後、サーバーを再起動します(python socketServer、閉じてスクリプトを再度開始するだけです)ソケットが切断され、サーバーがダウンしている間に再接続しようとしますが、サーバーを再起動すると- 何も起こりませんでした。socket.state() は常に ConnectingState にあります。

ここにコード例:

出力は次のとおりです。

0 投票する
1 に答える
9634 参照

c++ - リモート ホストの IP アドレス QTcpServer を取得する

Qtを使用して、QTcpServerを使用してTCPサーバーを作成しています。クライアントがサーバーに接続するたびに、リモート ホストの IP アドレスとポート番号を知りたいです。ドキュメントを検索してみましたが、このトピックに関する情報は見つかりませんでした。

私は方法があるはずだと知っていますが、私はそれを理解することができません。助けてください。

0 投票する
1 に答える
8969 参照

python - PyQt QTcpServer:複数のクライアントにデータを返す方法は?

2つ以上のクライアントに同時にデータを返すことができるPyQtを使用してQTcpServerを作成しようとしています。これにはスレッド化が必要になると思います。

threadedfortuneserver.pyの例をテストケースとして使用して(PyQt4に含まれていますが、私のシステムでは/ usr / share / doc / python-qt4-doc / examples / networkにあります)、複数のクライアントを接続したいと思います。クライアントのうちの1つが幸運を要求すると、他のクライアントも「クライアントXが幸運を受け取ったばかりです」のようなメッセージで更新されます。

fortuneserver / clientプログラムがどのように機能するかは理解していますが、幸運がクライアントに返送された後、クライアント接続はすぐに終了するようです。私の具体的な質問は次のとおりです。

  1. すべての接続を開いたままにして、クライアントの1つが財産を要求するたびに、他のクライアントを更新できるようにすることは可能ですか?

  2. もしそうなら、接続されたクライアントを追跡してループするための最良の方法は何ですか?

複数のクライアントが対話でき、各クライアントが他のクライアントのアクションについて更新できるアプリを開発したいので、これは私にとって深刻な障害です。

よろしくお願いします。他にご不明な点がございましたら、お気軽にお問い合わせください。

このスレッドを見つけましたが、利用するのに十分な特定の情報がありませんでした。他の議論はPythonソケットパッケージに関するものでしたが、PyQtを使用する場合、すべてがうまく機能するようにサーバーはQTcpServerである必要があることを理解しています。

*** 編集 ***

これが私のソリューションの最初の段階です。基本的なサーバーとクライアントを作成しました。サーバーは、クライアントが行編集ボックスに入力した内容を送り返すだけです。

これは、PythonとQtを使用したRapidGUIプログラミングの第18章の「buildingservices」の例に基づいています。

私が行った主な変更は、スレッドが無期限に実行され続け、ソケットが開いたままになり、クライアントから送信されるデータをリッスンすることです。

複数のクライアントを正常に処理します。確かに醜いですが、良い出発点だと思います。

私が望んでいるのは、1人のクライアントがテキストを入力するたびに各クライアントに通知できるようにすることです(たとえば、通常のチャットプログラムのように)。

また、あなたが誰と取引しているのかを知るために、私はプロのプログラマーではありません。私は物理学者であり、何年にもわたって規律のないスクリプトを書き、自分のベルトの下をいじっています。しかし、私はデータを渡すことができる基本的なサーバー/クライアントプログラムを開発しようと思います。

ヘルプや提案をありがとう!

サーバ:

クライアント:

0 投票する
1 に答える
509 参照

c++ - QTcpSocket::write での複数の呼び出し?

ここによるとhttp://doc-snapshot.qt-project.org/4.8/qiodevice.html

QTcpSocket や QProcess など、QIODevice の特定のサブクラスは非同期です。

たとえば、データのチャンクを送信するために最初の書き込み呼び出しが行われました。最初の書き込み呼び出しが終了する前に、別のデータのチャンクを送信するために 2 番目の書き込み呼び出しも行われました。

今、何が起きた?2 番目の呼び出しは、チャンクの送信を開始する前に、最初の呼び出しが完全に終了するのを待ちますか?

0 投票する
1 に答える
244 参照

c++ - QTcpSocket オブジェクトの割り当て