SOC_Accept

構文

#include <nitroWiFi/soc.h>
int SOC_Accept ( int s, void* sockAddr );

引数

s SOC_Socket()によって作成し、SOC_Bind()によってアドレスをバインドし、SOC_Listen()の呼び出しに成功したソケットを指定します。
sockAddr 接続を受け付けた相手の名前(アドレス)を記録するためのソケットアドレス構造体(SOCSockAddr,SOCSockAddrIn)へのポインタを指定します。
また、ソケットアドレスのlenフィールドは適切に初期化してください。(例 sizeof(SOCSockAddrIn))

返り値

0以上 受け付けた接続のソケット記述子。
SOC_EINVAL ソケット記述子の値が不正です。( s < 0 か存在しないソケット)
あるいはソケットが接続処理中です。あるいはストリーム・ソケットではありません。
あるいはローカルポートがバインドされていません。
SOC_EMFILE リソース不足です。(内部コマンドの作成に失敗しました)
SOC_ENETRESET ソケットが初期化されていません。
SOC_ENOMEM リソース不足です。(ソケットの複製に失敗しました)
SOC_EWOULDBLOCK ソケットが非封鎖モードです。(封鎖モードでないと実行できません)

注意:追加のエラーが今後のライブラリリリースで生じたり返されることがあります。すべての負の返り値は汎用のエラーとして扱ってください。

説明

接続キューから先頭の接続要求を取り出して、sで指定したソケットと同じパラメータ(タイプ、プロトコル、アドレスファミリー)のソケットを返します。元のソケット(s)は接続要求を受け付け続けられるようにそのまま残ります。

現状、SOC_Accept()では下位モジュール(CPS)の仕様により、ソケット の作成から Bind、Listen、そしてAccept が同時に行われます。また接続キューは説明上の概念で、実際にはありません。

SOC_Accept()は封鎖モードのストリーム・ソケットに対してのみ実行できます。

参照

SOC_Socket, SOC_Bind, SOC_Connect, SOC_Listen, SOC_Fcntl

履歴

2008/05/13 返り値 SOC_ETIMEDOUTSOC_ENOBUFSOC_EALREADYを削除、引数の修正、説明の修正
2006/01/13 返値の修正
2005/09/13 初版