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(); }