問題タブ [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 に答える
194 参照

qt - TCP ネットワーク通信のセキュリティ リスク

QTcp* を使用してサーバー/クライアント接続を確立できるアプリケーションを開発しています

クライアントはサーバーに番号を送信します。

受信した文字列は、その長さと品質がチェックされます (それは本当に数字ですか?)

すべてが OK の場合、サーバーはファイル パス (送信された番号によって異なります) を返します。

クライアントは、ファイルが存在するかどうか、および有効なイメージであるかどうかを確認します。ファイルがルールに準拠している場合、ファイルに対してコマンド実行します。

このタイプの接続には、どのようなセキュリティ上の懸念がありますか?

このプログラムは Linux システム用に設計されており、イメージ ファイルに対する外部コマンドは QProcess を使用して実行されます。送信された文字列に次のようなものが含まれている場合 (次のコマンドを実行しないでください):

次に、ファイルが見つからないセキュリティ チェックでブロックされます (ファイル パスではないため)。送信された文字列の有効性についてチェックが行われなかった場合、次のコマンドが実行されます。

それはパニックを引き起こすでしょう!しかし、これは起こり得ません。

それで、私が考慮すべきことはありますか?

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

c++ - 別のスレッドでの接続に参加している QTcpServer でのメモリ リーク

Windows 7 の Qt 4.7 で RPC サーバーを開発しています。同時に複数の実行に参加するために、すべての要求が個別のスレッドで実行されます (関数がブロックされている可能性があるため)。QTcpServer から継承し、incomingConnection 関数を再実装しました。次のようになります。

RpcServerConnection によって管理されるデータ交換。初期化メソッドは次のようになります。

すべてのデータが受信され、応答が送信されると、finish シグナルが発行されます。デバッグ すべてのスレッドとソケットが削除されていることがわかります。ただし、プロセスメモリは新しい接続ごとに増加し、終了しても解放されません...

QTcpServer から継承する場合、何か他のものを解放する必要がありますか?

0 投票する
0 に答える
1015 参照

multithreading - QTcpSocket への書き込みが別のスレッド エラーで失敗する

ソケットから読み取った 3 行を収集し、それらをソケットにエコーバックしようとする単純なスレッド TCP サーバーを作成しました。以下の関数 echoCommand がクラッシュします。

スロット/シグナルを接続するファイルは次のとおりです。

ソケットの書き込み中または書き込み後に、次のエラーが発生します。

run() 関数で tcpSocketPtr を作成したので、この関数と同じスレッドにあることがわかります。ソケットの書き込みが失敗するのはなぜですか? telnetウィンドウに出力が表示されるので、書き込みは成功していることを指摘する必要があります...しかし、それでもソケットの書き込みは失敗します...


詳細情報...QThreadにスロットを入れるべきではないことがわかりました..これを回避する方法がわかりませんが、ここに私のクラス定義があります:

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

qt - Qt endl は、Linux telnet からは見栄えがよく、Windows telnet からは間違っています

Qt で telnet サーバー アプリを構築しています。Linux telnet クライアントから接続すると、出力が見栄えがよくなります。たとえば、コンソールに "A" << endl << "B" << endl << "C" を送信すると、次のようになります。

Windows telnet クライアントから接続すると、

明らかに Qt の endl は '\n' のみを送信しています。これに対する簡単な解決策はありますか?endl を "\r\n" に置き換えると、Linux クライアントが台無しになりますか? フラッシュも強制する必要がありますか?

これは、telnet クライアントに送信するために使用している実際のコードです。

0 投票する
0 に答える
247 参照

sockets - 大きなファイルへの QDataStream の書き込み

ファイル転送アプリケーションがあり、QDataStream を使用して、QTCPSocket から読み取ったデータをファイルに書き込みます。これを書いたとき、QDataStream は固定サイズのままだと思っていましたが、ソケットから読み取ってファイルにデータをストリーミングすると、アプリケーションのメモリが着実に増加するようです。各チャンクを含むファイルであるため、すべてをRAMに保持する必要はありません。

メモリが着実に増加しないように、ファイルに書き込む方法を知っている人はいますか?

0 投票する
0 に答える
168 参照

qt - QTcpSocket により、Windows でハンドルが増加します

私はqt4.8.5とWindowsを使用しています。QTcpSocket を使用してサーバーに接続します。サーバーが開かない場合は、接続を試みます。私のやり方は:

error() シグナルを受け取ります。

タイマーを使用して接続を試みましたが、error() を呼び出して靴下を削除しました。しかし、タスク マネージャーでハンドルが増加することがわかりました。メモリリークはありますか?しかし、私は靴下を閉じて、deletelater() を使用しています。さらに、ソケット オブジェクトはメイン スレッドで実行されません。

ハンドルが大きくなる原因を知っている方がいましたら教えてください。ありがとう!