Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


dc_rpc_cltsend

〈このページの構成〉

名称

CUPへの一方通知

形式

ANSI C ,C++の形式

#include <dcrpc.h>
int  dc_rpc_cltsend(char *hostname,unsigned short port,
                    char *msg,
                    DCLONG len,DCLONG flags)

K&R版 C の形式

#include <dcrpc.h>
int  dc_rpc_cltsend(hostname,port,msg,len,flags)
char       *hostname;
unsigned  short  port;
char       *msg;
DCLONG     len;
DCLONG     flags;

機能

CUPへ一方的にデータを送ります。hostnameとportで示すホストのポート番号に対応するプロセス(CUP)に,msgで示すデータをlenで示す長さだけ送ります。送信できるデータの長さは,0からDCRPC_MAX_MESSAGE_SIZEで示すバイト長までです。

注※

rpc_max_message_sizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,rpc_max_message_sizeオペランドに指定した値になります。

dc_rpc_cltsend関数で送信したデータは,TP1/Clientが提供する次のAPIで受け取ることができます。

TP1/Clientのライブラリが提供するAPIについては,次の各製品マニュアルを参照してください。

UAPで値を設定する引数

●hostname

データを送信するホスト名を設定します。指定できるホスト名は1から255文字までの文字列です。文字列の後ろには,ヌル文字を設定してください。

●port

データを送信するポート番号を設定します。

●msg

送信するデータを設定します。

●len

送信するデータの長さを設定します。

●flags

DCNOFLAGSを設定します。

リターン値

リターン値

リターン値(数値)

意味

DC_OK

0

正常に終了しました。

DCRPCER_INVALID_ARGS

-301

引数に設定した値が間違っています。

DCRPCER_PROTO

-302

dc_rpc_open関数を呼び出していません。

DCRPCER_NO_BUFS

-304

メモリが不足しました。

DCRPCER_NET_DOWN

-306

ネットワークに障害が起こりました。

DCRPCER_MESSAGE_TOO_BIG

-308

送信するデータの長さが,DCRPC_MAX_MESSAGE_SIZEを超えています。

DCRPCER_SERVICE_NOT_UP

-314

送信先プロセスがありません。

ネットワークに障害が起こりました。

注※

rpc_max_message_sizeオペランドを使用した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,rpc_max_message_sizeオペランドに指定した値になります。

注意事項

  1. dc_rpc_cltsend関数の正常リターンは,RPCの通信プロトコル(TCP/IP)レベルでの送信(データ受け渡し)が完了したことを意味します。そのため,dc_rpc_cltsend関数が正常にリターンしても,CUPがデータを正常に受信していないおそれがあります。したがって,CUPが受信可能なTP1/ClientのAPIを呼び出していることが明らかな場合にだけ,dc_rpc_cltsend関数を発行してください。

  2. CUPが稼働していない場合は,DCRPCER_SERVICE_NOT_UPでエラーリターンします。

  3. dc_rpc_cltsend関数によるデータ送信先に指定できるのはCUPだけです。SPPのプロセスや自プロセスへは,データを送信できません。

  4. hostnameとportが示す1つのCUPに対し,複数のプロセスから同時にデータを送信する場合,送信するデータの長さは32,656バイトを超えないようにしてください。次の条件がすべて重なった場合,CUPが受信データを破棄してしまうことがあります。

    • 1つのCUPに対し,複数のプロセスから同時にデータを送信する。

    • 1つのCUPに対し,複数のプロセスから同時に送信するデータの中に,32,656バイトを超えるデータが存在する。

    • 32,656バイトを超えるデータの送信処理中に,一時クローズ処理が実行される。