4.6.1 dc_clt_send_s − メッセージの送信
- 〈この項の構成〉
(1) 形式
(a) TP1/Client/Wの場合
■ _s付き関数
#include <dcvclt.h> DCLONG dc_clt_send_s(DCCLT_ID cltid, char *buff, DCLONG sendleng, char *hostname, unsigned short portnum, DCLONG flags)
■ _s無し関数
#include <dcvclt.h> int dc_clt_send(char *buff, DCLONG sendleng, char *hostname, unsigned short portnum, DCLONG flags)
(b) TP1/Client/Pの場合
■ _s付き関数
#include <dcvclt.h> DCLONG dc_clt_send_s(DCCLT_ID cltid, char CLTFAR *buff, DCLONG sendleng, char CLTFAR *hostname, unsigned short portnum, DCLONG flags)
■ _s無し関数
#include <dcvclt.h> int dc_clt_send(char CLTFAR *buff, DCLONG sendleng, char CLTFAR *hostname, unsigned short portnum, DCLONG flags)
(2) 機能
MHPへメッセージを送信します。
dc_clt_send_s関数を実行する場合,flagsにDCCLT_ONEWAY_SND,またはDCCLT_SNDRCVを指定したdc_rpc_open_s関数を,あらかじめ実行しておく必要があります。
(3) UAPで値を設定する引数
-
cltid
dc_clt_cltin_s関数で受け取ったクライアントIDを指定します。
-
buff
送信するメッセージが格納されている領域を指定します。sendlengで指定する長さ以上の領域を指定してください。
-
sendleng
送信するメッセージの長さを指定します。
-
hostname
コネクションが確立されていない場合,接続するノードのホスト名を指定します。
NULLを指定すると,dc_rpc_open_s関数を実行したときに取得したクライアント環境定義DCSNDHOSTの内容を参照します。
ホスト名として指定できる長さは,63文字※までです。
ホスト名として,10進ドット記法のIPアドレスを指定することもできます。
- 注※
-
クライアント環境定義DCCLTOPTIONに00000008を指定した場合,ホスト名として指定できる長さは255文字までとなります。
-
portnum
コネクションが確立されていない場合,コネクションを確立して接続するノードのポート番号を指定します。
0を指定すると,dc_rpc_open_s関数を実行したときに取得したクライアント環境定義DCSNDPORTの内容を参照します。
-
flags
メッセージを送信後に,コネクションを解放するかどうかを指定します。
DCNOFLAGS:メッセージを送信後,コネクションを解放しません。
DCCLT_SND_CLOSE:メッセージを送信後,コネクションを解放します。
DCNOFLAGSを指定した場合,dc_rpc_close_s関数を実行するまでコネクションを解放しません。ただし,障害時を除きます。
(4) リターン値
リターン値 |
数値 (10進数) |
意味 |
---|---|---|
DC_OK |
0 |
正常終了しました。 |
DCCLTER_INVALID_ARGS |
-2501 |
引数に指定した値が誤っています。 |
DCCLTER_PROTO |
-2502 |
dc_rpc_open_s関数が実行されていません。 または,dc_rpc_open_s関数は実行されていますが,flagsにDCCLT_ONEWAY_SND,またはDCCLT_SNDRCVを指定していません。 |
DCCLTER_NO_BUFS |
-2504 |
メモリ不足が発生しました。 |
DCCLTER_NET_DOWN |
-2506 |
ネットワーク障害が発生しました。 |
DCCLTER_TIMED_OUT |
-2507 |
コネクション確立要求時にタイムアウトになりました。 |
DCCLTER_SYSERR |
-2518 |
システムエラーが発生しました。 |
DCCLTER_RESOURCE |
-2538 |
資源不足が発生しました。 |
DCCLTER_WRONG_HOST |
-2539 |
ホスト名が誤っています。または,hostname,およびDCSNDHOSTの両方にホスト名が指定されていません。 |
DCCLTER_CONNREFUSED |
-2541 |
相手システムに対するコネクションの確立要求が拒絶されました。 |
DCCLTER_INVALID_CLTID |
-2544 |
cltidに指定したクライアントIDは,dc_clt_cltin_s関数で受け取ったクライアントIDと異なっています。 |
DCCLTER_PORT_IN_USE |
-2547 |
OSが自動的に割り当てるポート番号が不足しています。 |
(5) 注意事項
-
メッセージ送信時に相手システムからコネクションが解放された場合,送信するメッセージ長によっては,コネクションが解放されたことを検知できないことがあります。この場合は,この関数の次以降に発行する関数で検知することがあります。CUPを作成するときは,このことを考慮してください。
-
リターン値DCCLTER_SYSERRが戻る場合,CUPを終了してから開始し直してください。