3.13 d_snd( )

<この節の構成>
(1) 名称
(2) 形式
(3) 機能
(4) リターン情報

(1) 名称

d_snd( )

データを送信します。

(2) 形式

#include <xnfs/diuser.h>
int d_snd(fd,buf,nbytes);
int fd;
char *buf;
unsigned nbytes;

(3) 機能

ユーザデータを送信します。通信管理の状態がD_DATAXFERのときだけ発行できます。

同期方式の場合は,ユーザデータが通信管理に取り込まれた時点で正常終了します。システムでビジー状態になると,ビジー状態が解除されるまでリターンしません。このため,業務や運用を考慮して,送信するデータの量を調整する必要があります。

非同期方式の場合は,システムでビジー状態になると異常終了し,エラー情報としてDFLOWを設定します(フロー制御機能)。このような場合は,次に示すどちらかの方法でd_snd( )を再発行してください。

fd
データリンク端点識別子を指定します。
buf
送信するデータを格納しておくバッファ(送信バッファ)のアドレスを指定します。
nbytes
送信するデータのサイズを指定します。0を指定すると,データを送信しないで正常終了します。なお,送信できるデータサイズの上限値は,あらかじめ構成定義文で指定しておきます。

(4) リターン情報

(a) リターン値

正常終了時:送信できたバイト数を返します。

異常終了時:-1を返します。

(b) エラー情報
エラー名称要因
DOUTSTATE6この関数が間違った順序で発行されました。
DSYSERR8この関数の実行中にシステムエラーが発生しました。詳細については,「3.16.1 詳細エラーコード」を参照してください。
DLOOK9データリンク端点上でイベントが発生しました。ライブラリ関数d_look( )による確認が必要です。
DBADDATA10指定されたデータサイズがシステムによって許可されている限界を超えました。または,送信されたデータのサイズが送信バッファのサイズを超えました。
DFLOW12フロー制御機能によって送信要求が失敗しました(非同期方式の場合)。