5.1.10 コネクション確立UOCインタフェース
コネクション確立UOCは,次に示す形式で呼び出します。
(1) 形式
- ANSI C,C++の場合
#include <dcmcf.h> #include <dcmcfuoc.h> #include <dcmtcpu.h> DCLONG con_uoc(dcmtcp_uoc_con_n *parm)
- K&R版 Cの場合
#include <dcmcf.h> #include <dcmcfuoc.h> #include <dcmtcpu.h> DCLONG con_uoc(parm) dcmtcp_uoc_con_n *parm;
(2) 説明
con_uoc(コネクション確立UOC)を呼び出すとき,MCFは次に示す所定のパラメタをparmに設定します。
(3) パラメタの内容
(a) dcmtcp_uoc_con_nの内容
typedef struct{ char cn_name[9]; …コネクションID char reserve[7]; …予備 dcmtcp_cnuoc_oaddr *oaddr; …相手システムのアドレス情報 unsigned short oportno; …相手システムのポート番号 unsigned short iportno; …自システムのポート番号 DCLONG connect_permit; …コネクション確立要求受け入れ可否 DCLONG reject_reason; …コネクション確立拒否理由 DCLONG rtn_detail; …詳細リターンコード }dcmtcp_uoc_con_n;
(b) dcmtcp_cnuoc_oaddr(相手システムのアドレス情報)の内容
typedef struct{ unsigned short o_type; …アドレス通知形式 unsigned short o_len; …アドレス長 char o_addr[256]; …相手システムのアドレス }dcmtcp_cnuoc_oaddr;
(4) MCFが値を設定する項目
(a) dcmtcp_uoc_con_n
-
cn_name
確立要求を受け付けたコネクションIDが設定されます。
-
oaddr
確立要求を行った相手システムのアドレス情報として,次の値が設定されます。
-
oportno
確立要求を行った相手システムのポート番号が設定されます。
-
iportno
確立要求を受け付けた自システムのポート番号が設定されます。
(b) dcmtcp_cnuoc_oaddr(相手システムのアドレス情報)
-
o_type
相手システムアドレスの通知形式が設定されます。
0x01 ドット10進数字(dotted-decimal形式)表記
-
o_len
相手システムアドレスの格納長が設定されます。
-
o_addr
相手システムアドレスを格納した領域が設定されます。
相手システムのIPアドレスはドット10進数字(dotted-decimal形式)表記の文字列で設定されます(例:"172.18.151.40")。
(5) ユーザが値を設定する項目
(a) dcmtcp_uoc_con_n
-
connect_permit
コネクション確立要求を受け入れるかどうかを設定します。
- DCMTCP_UOC_CON_ACCEPT
-
コネクション確立要求を受け入れます。
- DCMTCP_UOC_CON_REJECT
-
コネクション確立要求を拒否します。
-
reject_reason
コネクション確立要求を拒否する場合の拒否理由を設定します。値は任意です。この拒否理由はログメッセージ(KFCA14840-I)に出力されます。
-
rtn_detail
コネクション確立UOCがDCMTCP_UOC_CON_NG(UOC異常終了)でリターンするときの詳細コードを設定します。この詳細リターンコードはログメッセージ(KFCA14808-E)に出力されます。値は-19999〜-19000の範囲内で設定します。TP1/NET/TCP/IPは,値の範囲をチェックしません。
(6) リターン値
con_uoc()は次のコードでリターンしてください。
リターン値 |
意味 |
---|---|
DCMTCP_UOC_CON_OK |
正常リターン(コネクション確立要求の受信) |
DCMTCP_UOC_CON_NG |
コネクション確立要求判定エラー |
(7) MCFメイン関数のコーディング例
コネクション確立UOCをメイン関数に登録する場合のコーディング例を次に示します。
- ANSI C,C++の場合
#include <dcmtcp.h> #include <dcmtcpu.h> extern DCLONG con_uoc(dcmtcp_uoc_con_n *);/* コネクション確立UOC*/ extern dcmcf_uoc_t dcmcf_uoctbl; /* UOCテーブルextern宣言 */ int main() { dcmcf_uoctbl.assctn /* コネクション確立UOC */ = (dcmcf_uocfunc)con_uoc; /* アドレス設定 */ dc_mcf_svstart(); return 0; }
- K&R版 Cの場合
#include <dcmtcp.h> extern DCLONG con_uoc(); /* コネクション確立UOC */ extern dcmcf_uoc_t dcmcf_uoctbl; /* UOCテーブルextern宣言 */ main() { dcmcf_uoctbl.assctn = con_uoc; /* コネクション確立UOC */ /* アドレス設定 */ dc_mcf_svstart(); }