この記事では、TCP/IP通信の基本に関する概要を説明します。LabVIEWに関する前提知識が必要となります。LabVIEWの初心者である場合は、最初にこのLabVIEWチュートリアルを参照することで、この記事をよりよく理解することができます。
インターネットプロトコル (IP)、ユーザデータグラムプロトコル (UDP)、および転送制御プロトコル (TCP) は、ネットワーク通信の基本ツールです。TCP/IPという名前は、最もよく知られている2つのインターネットプロトコル群である転送制御プロトコル(TCP)およびインターネットプロトコル(IP)から来ています。TCP/IPを使用して、単一ネットワークまたは相互接続されたネットワーク(インターネット)上で通信を行うことができます。
TCP/IP通信のユーザインタフェースは、信頼できるネットワーク通信を確保するための複雑性を感じさせないシンプルな作りになっています。TCP/IP通信の仕組みについては、「LabVIEWヘルプ」の「TCP/IPおよびUDPでLabVIEWを使用する」を参照してください。
LabVIEWでのTCP通信には、機能→データ通信→プロトコル→TCPパレットにあるTCP/IP機能を使用してください。DAQ、計測器、ファイルI/Oの通信と同様に、処理には接続開始、情報の読み書き、および接続終了が含まれます。
ほとんどのI/O通信では、プロセッサは常にクライアントであり、ディスクドライブサーバ、外部計測器サーバ、またはDAQボードサーバへの接続を開始します。TCP/IP接続では、コンピュータはクライアントまたはサーバとして機能します。以下のブロックダイアグラムは、「TCP接続を開く」を使用してリモートサーバへの接続を開始するクライアントアプリケーションを示しています。サーバ、すなわちデーモンはリモート接続をリスンし、適切に応答します。
LabVIEWユーザは、TCP/IP通信用のカスタムアプリケーションを開発できます。プログラマはクライアントとサーバの両方を開発する責任があります。
誰でもサーバへの接続を開始できるため、サーバのアクセス制御が必要になる場合があります。以下のブロックダイアグラムは、サーバが「TCPリスン」VIのリモートアクセスの出力値を使って、リモートクライアントがサーバへのアクセス権を持っているかどうかを判断する方法を示しています。
アプリケーションの多くは、1つの値の読み書きだけを行うわけではありません。通信はプロトコルを含む、進行中のプロセスです。たとえば、クライアントは以下の4つのコマンドを8ビット整数でサーバに送信したと想定します。
1 = データを収集して確認
2 = データを送信
3 = ステータスを取得
4 = 接続を閉じる
以下の図*は、サーバがこれらのコマンドをどのように受信するかを示しています。基本的なTCP機能は同じですが、周囲のコードにより複雑な接続と堅牢な通信が可能になります。
以下のブロックダイアグラム*は、内部ケースステートメントの他の4つのケースを示しています。各ケースは、サーバが送信する特定のコマンドを処理します。各ケースは、ループを継続するかどうかを決定する継続端子に情報を送信します。特に、Quit (終了) ケースは常にFALSEの値を返します。ループを終了すると、サーバはクライアントとの接続を閉じます。
このタイプのサーバアーキテクチャを使用することで、より複雑なネットワーク通信手順に対応するための柔軟なサーバを開発できます。開発するプロトコルは、前述の例よりも複雑な場合があります。
*これらの画像は旧バージョンのLabVIEWのものです。データワイヤと機能アイコンの色がバージョンと一致しない場合があります。コードの構造は引き続き適用可能です。