通信管理 XNF/AS プログラマーズガイド OSI編
![[目次]](FIGURE/CONTENT.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
データの送信要求を行います。送信要求は,通信網にデータを送出した時点で完了となります。ただし,送信したデータが相手まで届いているとは限りません。
#include <xnfw/xnf.h> /* ヘッダ情報取り込み */
struct cd_s sbuf; /* 通信記述部の領域確保 */
int rcode; /* リターンコード */
sbuf.O_vpart1.O_mode=O_SYN; /* 通信記述部の設定 */
.......................... .................
sbuf.O_vpart2.O_sdtlen=DTLEN; /* 通信記述部の設定 */
rcode=xnf_snd(&sbuf); /* 関数呼び出し */
|
(3) リターン情報
(a) リターンコード
0:正常終了
-1:異常終了
(b) 詳細エラー情報
詳細エラー情報は,リターンコードが異常終了のときに,グローバル変数のerrnoに設定されます。詳細エラー情報については,「11. 詳細エラー情報」を参照してください。
(c) 詳細エラーコード
詳細エラーコードは,リターンコードが異常終了でerrno=EINVALのときに,通信記述部のO_statusに設定されます。詳細エラーコードについては,「12. 詳細エラーコード」を参照してください。
- 送信処理は,フロー制御を行っており,通信網にデータを送出するまでの間に通信管理内に要求が保留されることもあります。したがって,同期型の送信要求が即時に完了するとは限りません。
- SEND関数は,アソシエーションが確立されている状態以外では発行できません。アソシエーションが確立されている状態とは,次に示す状態のことです。
- ENABLE(獲得型)関数発行後,RECEIVE関数によって相手APからアソシエーション確認(要求種別がO_ASC_CF)を受信
- ENABLE(受け入れ指示型)関数発行正常終了後,ENABLE(受け入れ応答型)関数を発行
- 非同期指定の場合,SEND関数は通信管理に送信要求を指定するだけで,送信動作は完了していません。送信動作完了通知は,CHECK関数を発行して受け取ります。CHECK関数については,「10.6 CHECK」を参照してください。
CHECK関数を発行し,SEND関数の完了を受け取るまではSEND関数で指定した送信データ領域の内容を更新しないでください。
CHECK関数を発行し,SEND関数の完了を受け取るまでは同一アソシエーションで別のSEND関数を発行できません。
- 非同期RECEIVE関数を発行した状態で,SEND要求を行ってもかまいません。
- セション要求機能で全二重以外を使用する場合,APのシーケンスエラーによってエラーリターンします。この場合はAPが送受信を続けても回復できません。
セション要求機能で全二重以外を使用する場合で,SEND関数を非同期で発行しているときも,APと通信管理との状態不一致によってシーケンスエラーになることがあります。この場合は,非同期RECEIVE関数の完了事象を受信することによって回復手段をAPが実行できます。
APはこのような二つのケースに対応できるように半二重,小同期,再同期,および大同期の処理手順を考慮する必要があります。
- errno=EINVALのときは,以降の通信はできません。異常終了のDISABLE関数,またはCLOSE関数を発行し,通信を終了させてください。これら以外の関数を発行した場合,errno=EDEADLKでエラーリターンします。
- SEND関数は,通信障害が発生していてもエラー通知しない場合があります。この場合,RECEIVE関数で障害情報を受け取る必要があります。
All Rights Reserved. Copyright (C) 2002, 2009, Hitachi, Ltd.