7.3 アプリケーションプログラム作成上の注意事項

OSI通信機能を使用して通信するアプリケーションプログラムを作成する場合の注意事項について説明します。

<この節の構成>
(1) RECEIVE関数の先出しについて
(2) 通信中の停止処理について

(1) RECEIVE関数の先出しについて

OSI通信機能では,相手からのデータを受信すると,RECEIVE関数で受信するまでシステム内のバッファにデータを保存します。そのため,RECEIVE関数が発行されないと,システム資源が消費され,フロー制御などによって通信ができなくなることがあります。

これを防止するためには,アプリケーションプログラムは相手から受信したデータをできるだけ速やかにRECEIVE関数で受け取る必要があります。

ENABLE関数の発行後は,RECEIVE関数を常に発行し,データを受け取るようにしてください。

システム資源の消費を防止するために,アプリケーションプログラムは,次に示すどちらかの方法で作成してください。

  1. ENABLE関数の発行後は非同期のRECEIVE関数を常に発行し,EVENTS関数で受信完了事象を検知したあとは,速やかにCHECK関数を発行してデータを受け取ってください。
  2. SEND関数とRECEIVE関数を別プロセスで発行し,SEND中もRECEIVE関数が発行されるようにしてください。

(2) 通信中の停止処理について

XNF/ASでは,通信中にもxnfstopコマンドでOSI通信機能の停止処理ができます。OSI通信機能が停止すると,発行された関数はerrno=ENXIOでエラーリターンし,以降の処理は行えません。このような場合,アプリケーションプログラムは,CLOSE関数を発行して通信を速やかに終了させるようにしてください。