標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4.2 | 両方 |
#define _XOPEN_SOURCE_EXTENDED 1
#include <xti.h>
int t_accept(int fd, int resfd, struct t_call *call);
struct netbuf addr;
struct netbuf opt;
struct netbuf udata;
int sequence;
call では、addr は
呼び出しトランスポート・ユーザーのプロトコル・アドレスです。opt は、接続と関連している任意のオプションを示して
います。udata は呼び出し元に戻されるユーザー・データを指し、sequence とは、応答を前に受け取った接続指示と一意的に関連付ける t_listen() によって戻される値です。呼び出し元のアドレス、addr は、NULL (長さゼロ) のことがあります。addr が NULL 以外の場合には、これは任意に XTI でチェック
できます。トランスポート・ユーザーは、接続指示が達するものと同じまたは異なるローカル・トランスポート終点で、接続を受け入れます。同じ終点 (resfd==fd) で接続を受け入れる前に、ユーザーは、(t_accept() または t_snddis() を使用して) そのトランスポート終点で受け入れた以前の接続指示に、応答している必要があります。そうでない場合には、t_accept() は失敗して、t_errno を TINDOUT に設定します。
異なるトランスポート終点 (resfd!=fd) を 指定した場合には、ユーザーは、t_accept() が発行される前に その終点のバインドを選択してもしなくても構いません。終点が t_accept() の 前にバインドされない場合には、トランスポート提供者は自動的に これを fd がバインドされるものと 同じプロトコル・アドレスにバインドします。トランスポート・ユーザーが終点のバインドを選択した場合には、ゼロの qlen を使用してこれをプロトコル・アドレスに バインドし、t_accept() を発行する前にこれを T_IDLE 状態にする 必要があります。
終点 fd で受け取りを待機している指示 (例えば、接続または切断) がある場合には、t_accept() に対する呼び出しは、TLOOK に設定された t_errno を使用すると 失敗します。
接続の受け入れ中にユーザー・データを戻しても、TCP では サポートされないので、常に udata フィールドは 無意味です。
ユーザーが、オプション (call->opt.len == 0) を指示しないときには、接続は無条件に受け入れられるものと見なされます。接続の正常な受け入れを確実にするには、トランスポート提供者は、デフォルト以外のオプションを選択できます。
インプリメンテーションの制約事項のために、異なるプロセスが (t_listen を 使用して) 接続を取得した終点で保留になっているその接続を 受け入れる動作は未定義です。
有効状態: fd: T_INCON resfd (fd!=resfd): T_IDLE
正常に実行された場合、t_accept() は 0 を戻します。