

#include <nitroWiFi/soc.h>
int SOC_Read ( int s, void* buf, int len );
int SOC_Recv ( int s, void* buf, int len, int flags );
int SOC_RecvFrom ( int s, void* buf, int len, int flags, void* sockFrom );
| s | ソケット記述子。 | ||||
| buf | 受信バッファへのポインタ。 | ||||
| len | 受信バッファの長さ(バイト)。 | ||||
| flags | メッセージの受信状態を指定します。flagsは、0か以下の値の論理ORをとったものです。
|
||||
| sockFrom | 通信相手の名前(アドレス)を取得するためのソケットアドレス構造体(SOCSockAddr,SOCSockAddrIn)へのポインタ。ソケットアドレスの lenフィールドは適切に初期化してください。(例 sizeof(SOCSockAddrIn)) |
| 0以上 | 受信したメッセージのバイト数。 |
SOC_EINVAL |
ソケット記述子の値が不正です。( s < 0 か存在しないソケット) あるいは、SSLソケットに SOC_MSG_DONTWAITフラグを指定した。(SSLは封鎖モードでサポートします)あるいは、封鎖モードの呼び出しを割り込みハンドラ内で使用した。 |
SOC_ENETRESET |
ソケットライブラリが初期化されていません。 |
SOC_ENOTCONN |
接続されていません。 |
SOC_EWOULDBLOCK |
受信を待つデータもしくは帯域外データがありません。(sが非封鎖モードのソケットか、SOC_MSG_DONTWAITフラグが指定された場合) |
注意:追加のエラーが今後のライブラリリリースで生じたり返されることがあります。すべての負の返り値は汎用のエラーとして扱ってください。
SOC_Read(), SOC_Recv(), SOC_RecvFrom() は、ソケットの相手からlenバイトの読み込みを試みます。
SOC_Read() は flags を設定しない以外は SOC_Recv()
と同等です。
SOC_Read(), SOC_Recv(), SOC_RecvFrom()
は、SOC_Fcntl() でソケット記述子を非封鎖モードに設定していない限り(もしくはSOC_MSG_DONTWAITフラグが指定されない限り)、ソケットの受信バッファにメッセージがなければメッセージが届くまでブロックします。
データグラム・ソケットでは、メッセージ全体が単一処理で読まれます。メッセージが buf で与えられたバッファに収まらなければ、超過したバイトは捨て去られます。ストリーム・ソケットでは、メッセージ境界は無視されます。この場合、データは利用可能になり次第ユーザーへ返ります。
注意:TCPコネクションがクローズされた後でも返り値は0となります。これはPOSIXに規定される仕様に準じています。
2008/05/13 返り値の修正
2005/12/12 説明の記述変更
2005/09/13 初版