User manual - デバイス制御ライブラリリファレンスマニュアル(2014年10月10日)

306
17.2.15 net_recv
送信元情報を取得せずに、データを受信します。
int net_recv (
int
socket
,
char *
buf
,
int
buflen
,
int
flags
)
パラメータ
socket
ソケット番号を指定します。
buf
受信データ格納領域を指定します。
buflen
最大受信長を指定します。
flags
UDP ソケットの場合は、0 を指定してください。
TCP ソケットの場合は、下記オプションを指定します。
MSG_OOB
TCP 緊急データのみを受信します。
戻り値
下記の値を返します。
正の値 :受信したデータ長
0
:相手からの正常切断
-1
:エラー (詳細は net_getsockerr関数で取得してください。)
説明
net_setsockopt関数で設定
した時間内に送信処理が完了しなかった場合は、エラーとなりま
す。net_setsockopt関数を使用していない場合は、デフォルト値の 1 分となります。
本関数は、ソケット種別により処理が異
なります。
TCP ソケットの場合
受信バッファから
buf
で示される領域へコピーを完了した時点でリターンします。受信バッファに入っ
ているデータが、
buflen
で示される長さより短い場合は、受信バッファが空になるまでデータを取り出
し、取り出したデータの長さを返します。また、受信バッファに入っているデータが
buflen
で示される
長さ以上の場合は、
buflen
だけ受信して正常終了します。
受信バッファが空の場合は 1byte でもデータを受信するまで待ち状態になります。
なお、本TCP/IPでは緊急データの受信時にコールバック関数を呼び出すことができます。これによっ
て、緊急データを受信したときのみ、MSG_OOBをセットした状態で net_recv関数
を呼び出すことがで
きます。