上位プログラムは,アソシエーション単位にデータの受信(RECEIVE)を要求できます。どのアソシエーションに対する受信要求かは,アソシエーション端点識別子で指定します。
上位プログラムは,アソシエーション単位に受信バッファを用意して,最大64キロバイトのデータを一度に受信要求できます。この最大ユーザデータ長はシステムの性能を保証するための目安であり,64キロバイトを超える受信バッファ長を指定しても,OSI通信機能はエラーとしません。
OSI通信機能では,それぞれのレイヤで決められた大きさに分割されている受信データを組み立てて上位プログラムに渡します。受信データが大き過ぎて,上位プログラムが指定した受信バッファに入りきらない場合は,データの後ろを切り捨てます。この場合,OSI通信機能は,リターン情報で報告します。
なお,受信データの到着と受信要求とは同期していません。上位プログラムがデータの受信を要求したときにそのアソシエーション上にデータが到着していない場合は,データが到着するまで要求を保留します。
したがって,上位プログラムは,同期型の要求をすると,データが到着するまでその後の動作ができなくなります。
また,次に示す状況下では受信ビジーが発生します。これを防ぐために,上位プログラムは,通信時は常に非同期の受信要求を行い,完了事象を速やかに取得してください。
データの送受信手順(同期型の場合)を図4-1に,データの送受信手順(非同期型の場合)を図4-2に示します。
図4-1 データの送受信手順(同期型の場合)
図4-2 データの送受信手順(非同期型の場合)