通信管理 XNF/AS プログラマーズガイド OSI編
![[目次]](FIGURE/CONTENT.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
アソシエーションの確立応答の受信,アソシエーションの解放指示の受信,ROSEデータの受信,およびPLデータの受信を行います。なお,同期型の要求の場合,受信データがあれば受信処理はすぐに完了しますが,受信データがなければ到着するまで待ちます。
#include <xnfw/xnf.h> /* ヘッダ情報取り込み */
struct cd_s rbuf; /* 通信記述部の領域確保 */
int rcode; /* リターンコード */
rbuf.O_vpart1.O_mode=O_SYN; /* 通信記述部の設定 */
.......................... .................
rbuf.O_vpart2.O_bflen=BFLEN; /* 通信記述部の設定 */
rcode=xnf_rcv(&rbuf); /* 関数呼び出し */
|
(3) リターン情報
(a) リターンコード
正の整数:指定した受信バッファ長不足のため,不足分のデータを読み捨てた
0:正常終了
-1:異常終了
(b) 詳細エラー情報
詳細エラー情報は,リターンコードが異常終了のときに,グローバル変数のerrnoに設定されます。詳細エラー情報については,「11. 詳細エラー情報」を参照してください。
(c) 詳細エラーコード
詳細エラーコードは,リターンコードが異常終了でerrno=EINVALのときに,通信記述部のO_statusに設定されます。詳細エラーコードについては,「12. 詳細エラーコード」を参照してください。
- 同期指定の場合,受信データがあれば受信データを読み込んでリターンしますが,受信データがなければデータが到着するまでリターンしません。
- 非同期指定の場合,RECEIVE関数は通信管理に受信要求をするだけで,受信動作は完了していません。受信動作完了通知は,CHECK関数を発行して受け取ります。CHECK関数については,「10.6 CHECK」を参照してください。
- RECEIVE関数で次に示す要求種別を受信した場合,APは終了要求のDISABLE関数を発行してください。DISABLE関数を発行するまでアソシエーションは非活性化されません。
- O_ABR_ID:A_ABORT指示
- O_PAR_ID:A_PABORT指示
- O_ASC_CF:A_ASC確認の拒否
- 同じアソシエーションでRECEIVE関数が発行できる非同期要求回数は1です。
- 同期指定の場合,以前に発行した非同期指定の関数の完了事象があると,エラーリターンします。APはCHECK関数を発行して完了事象を受け取る必要があります。
- RECEIVE関数はアソシエーションが確立されている状態か,または要求種別O_ASC_CFを受信するときだけ発行できます。
ほかのアソシエーション未確立状態でRECEIVE関数を発行した場合は,エラーリターンします。
- アソシエーションの確立時にO_EXACTRを指定してO_ASC_CFを受信する場合は,「自局PSAPアドレス情報」および「マルチネットワーク情報※」格納領域を指定してください。
- 注※
- 指定しない場合は,格納領域アドレスをNULLクリアしてください。
- errno=EINVALのときは,以降の通信はできません。異常終了のDISABLE関数,またはCLOSE関数を発行し,通信を終了させてください。これら以外の関数を発行した場合,errno=EDEADLKでエラーリターンします。
All Rights Reserved. Copyright (C) 2002, 2009, Hitachi, Ltd.