通信管理 XNF/AS プログラマーズガイド HDLC編

[目次][用語][索引][前へ][次へ]

3.9 d_rcv( )

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

(1) 名称

 
d_rcv( )
 

データを受信します。

(2) 形式

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

(3) 機能

ユーザデータを受信します。同期方式の場合は,データが到着するのを待ってリターンします。非同期方式の場合は,データが到着していなければ異常終了し,エラー情報としてDNODATAを設定します。

fd
データリンク端点識別子を指定します。

buf
受信したデータを格納するバッファ(受信バッファ)のアドレスを指定します。

nbytes
受信バッファのサイズを指定します。

flags
オプションのフラグD_MOREが設定されるフラグ領域のアドレスを指定します。リターンした場合に,このフラグが設定されたときは,その時点でデータが終了していないため,再度d_rcv( )を発行してデータの続きを受信する必要があることを示します。また,このフラグがクリアされることでデータの終了を示します。

(4) リターン情報

(a) リターン値

正常終了時:受信バイト数を返します。

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

(b) エラー情報
エラー名称 要因
DOUTSTATE 6 この関数が間違った順序で発行されました。
DSYSERR 8 この関数の実行中にシステムエラーが発生しました。詳細については,「3.16.1 詳細エラーコード」を参照してください。
DLOOK 9 データリンク端点上でイベントが発生しました。ライブラリ関数 d_look( )による確認が必要です。
DNODATA 13 受信できるデータがありません(非同期方式の場合)。

(5) 注意事項

受信バッファにデータが溜まり過ぎると,バッファがビジー状態となるため,一定の間隔でd_rcv( )を発行することをお勧めします。なお,このような例については,「図4-7 同期方式でのデータの受信(ビジー状態になった場合)」を参照してください。非同期方式の場合でも運用方法は同じです。