5.1.10 コネクション確立UOCインタフェース

コネクション確立UOCは,次に示す形式で呼び出します。

<この項の構成>
(1) 形式
(2) 説明
(3) パラメタの内容
(4) MCFが値を設定する項目
(5) ユーザが値を設定する項目
(6) リターン値
(7) MCFメイン関数のコーディング例

(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
(b) dcmtcp_cnuoc_oaddr(相手システムのアドレス情報)

(5) ユーザが値を設定する項目

(a) dcmtcp_uoc_con_n

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