1

私は 2 つのプログラム (server.vi) と (client.vi) を書いています。TCP 接続を介して相互に通信します。

クライアントがサーバーとの TCP 接続を開くと、サーバーはタイプ「A」のパケットで応答します。クライアントは、確認応答としてタイプ「A」の別のパケットをサーバーに送り返します。この時点で、サーバーはタイプ「B」のパケットの連続ストリームをクライアントに送信し始めます。そして、クライアントはタイプ「C」のパケットの連続ストリームの送信を開始します。

これは、タイプ B とタイプ C のパケットの送信と受信が並行して行われることを意味します。

このようなものをlabviewでどのように実装すればよいですか?

これが私が持っている1つのアイデアであり、誰かがコメントするか、より良い提案を提供できることを望んでいました.

  1. サーバーには 2 つの while ループがあります

    を。最初の while ループは、タイプ「C」のパケットを受信する TCP 読み取り関数で構成されます。

    b. 2 番目の while ループは、タイプ「B」のパケットを送信する TCP 書き込み関数で構成されます

  2. クライアントには 2 つの while ループがあります

    を。最初の while ループは、タイプ「C」のパケットを送信する TCP 書き込み関数で構成されます

    b. 2 番目の while ループは、タイプ「B」のパケットを受信する TCP 読み取り関数で構成されます。

このようにして、タイプ「B」と「C」のパケットを並行して送受信しています。

すべての while ループは互いに独立しており、クライアント プログラムとサーバー プログラムの両方が停止しない限り、本質的に無限です。

これは意味がありますか?これを行うためのより賢い/より良いアプローチはありますか?

4

1 に答える 1

2

これは、LabVIEW で 2 つのプロセスを並行して実行する適切な方法のように思えます。

LabVIEW に付属のサンプルを見てください - LV 2012 には「TCP Communicator - Active.vi」(ヘルプ -> サンプルを検索 -> ネットワーク -> TCP & UDP) があります。再記述。

各ループをいつ、どのように停止するかを理解する必要があります。上記の例ではローカル変数を使用していますが、たとえば通知機能を使用することもできます。

于 2013-06-12T08:27:53.673 に答える