t_rcvconnect() - 接続要求からの確認の受信

標準

標準/拡張機能 C/C++ 依存項目
XPG4.2 両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <xti.h>

int t_rcvconnect(int fd, struct t_call *call);

機能説明

呼び出しトランスポート・ユーザーは、前に送信された接続要求の 状況を判別できます。t_rcvconnect() は、非同期モードで接続を確立するために t_connect() と 一緒に使用されます。この関数が正常に終了すると、接続が確立されます。

引数 fd は、通信が確立される ローカル・トランスポート終点を識別し、呼び出しには新規に 確立された接続と関連した情報が含まれます。引数呼び出しは、次のメンバーを含む t_call 構造体を 指します。
        struct netbuf   addr;
        struct netbuf   opt;
        struct netbuf   udata;
        int             sequence;
call では、addr は 応答トランスポート終点と関連したプロトコル・アドレスを 戻します。opt は、接続と関連している任意のオプションを示して います。udata は、TCP トランスポート提供者が接続の確立時に ユーザー・データの伝送をサポートしないので無意味です。sequence は、この関数に対して意味はありません。

各引数の maxlen フィールドは、それぞれの バッファーの最大サイズを示すためにこの関数を発行する前に 設定する必要があります。しかし、call は NULL ポインターになることが あります。この場合には、t_rcvconnect() からの戻り時に情報は ユーザーに提供されません。デフォルトで、t_rcvconnect() は同期モードで実行し、接続が戻る前に確立されるのを待機します。戻り時には、addr フィールドにリモート終点のアドレスが 含まれ、opt はユーザーが入力時に指定したオプションの ネゴシエーションの結果を反映します。

O_NONBLOCK が (t_open() または fcntl() を使用して) 設定された場合には、t_rcvconnect() は、非同期モードで実行し、既存の接続確認のポーリングまで削減します。使用できるものが何もない場合には、t_rcvconnect() は失敗し、接続の確立を待機しないで即時に戻ります(以下の TNODATA を参照してください)。この場合には、接続確立フェーズを完了し、呼び出しに戻された情報を 検索するために、t_rcvconnect() を再度呼び出す必要があります。

有効状態: T_OUTCON

戻り値

正常に実行された場合、t_rcvconnect() は 0 を戻します。

正常に実行されなかった場合、t_rcvconnect() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
TBADF
指定されたファイル記述子は、トランスポート終点を 指していません。
TBUFOVFLW
着信引数 (maxlen) に割り振られたバイト数は 0 より 大きいが、その引数の値を保管するには不十分で、call に 戻される接続情報は廃棄されます。ユーザーが見た提供者の状態は、T_DATAXFER に変わります。
TLOOK
このトランスポート接続で非同期イベントが起こって、即時のアテンションが必要です。
TNODATA
O_NONBLOCK は設定されましたが、接続確認はまだ到着して いません。
TNOTSUPPORT
この関数は、基礎トランスポート提供者によって サポートされません。
TOUTSTATE
関数は、fd によって参照されたトランスポート終点で 誤ったシーケンスで発行されました。
TPROTO
このエラーは、XTI と他に適切な XTI (t_errno) が ないトランスポート提供者の間で通信問題が検出されたことを 示しています。
TSYSERR
この関数の実行時に、システム・エラーが発生しました。

関連情報