4.2 データの受信

上位プログラムは,アソシエーション単位にデータの受信(RECEIVE)を要求できます。どのアソシエーションに対する受信要求かは,アソシエーション端点識別子で指定します。

上位プログラムは,アソシエーション単位に受信バッファを用意して,最大64キロバイトのデータを一度に受信要求できます。この最大ユーザデータ長はシステムの性能を保証するための目安であり,64キロバイトを超える受信バッファ長を指定しても,OSI通信機能はエラーとしません。

OSI通信機能では,それぞれのレイヤで決められた大きさに分割されている受信データを組み立てて上位プログラムに渡します。受信データが大き過ぎて,上位プログラムが指定した受信バッファに入りきらない場合は,データの後ろを切り捨てます。この場合,OSI通信機能は,リターン情報で報告します。

なお,受信データの到着と受信要求とは同期していません。上位プログラムがデータの受信を要求したときにそのアソシエーション上にデータが到着していない場合は,データが到着するまで要求を保留します。

したがって,上位プログラムは,同期型の要求をすると,データが到着するまでその後の動作ができなくなります。

また,次に示す状況下では受信ビジーが発生します。これを防ぐために,上位プログラムは,通信時は常に非同期の受信要求を行い,完了事象を速やかに取得してください。

データの送受信手順(同期型の場合)を図4-1に,データの送受信手順(非同期型の場合)を図4-2に示します。

図4-1 データの送受信手順同期型の場合)

[図データ]

図4-2 データの送受信手順非同期型の場合)

[図データ]