t_open() - トランスポート終点の確立

標準

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

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <xti.h>

int t_open(char *name, int oflag, struct t_info *info);

機能説明

t_open() は、トランスポート終点の初期設定での最初のステップ として呼び出す必要があります。この関数は、特定の トランスポート提供者 (すなわち、トランスポート・プロトコル) を 指示するトランスポート提供者 ID を提供し、トランスポート終点 を識別するファイル記述子を戻して、トランスポート終点を 確立します。
注: 65536 より小さい、使用可能なファイル記述 子が少なくとも 1 つはなければなりません。

引数 name は、トランスポート提供者 ID を指します。サポートされた唯一のトランスポート提供者は、"/dev/tcp" で、TCP トランスポート提供者を示しています。その名前の装置は、実際にはファイル・システムには存在しません。これは単に、従来からの規則を順守するためにだけ使用されます。引数 oflag は、オープン・フラグ (open() でのとおり) を識別します。これは、O_NONBLOCK を使用して、オプションでビット単位包含 OR 化された、O_RDWR から構成されています。これらのフラグは、ヘッダー <fcntl.h> で定義されます。t_open() が戻したファイル記述子は、以降のすべての関数が 特定のローカル・トランスポート終点を識別するために 使用されます。

また、この関数は、フィールドを info 構造体に 設定して、基礎トランスポート・プロトコルの各種のデフォルト特性 を戻します。この引数は、次のメンバーを含む t_info 構造体を指します。
long addr;      /* max size of the transport protocol address  */
long options;   /* max number of bytes of                      */
                /* protocol-specific options                   */
long tsdu;      /* max size of a transport service data        */
                /* unit (TSDU)                                 */
long etsdu;     /* max size of an expedited transport          */
                /* service data unit (ETSDU)                   */
long connect;   /* max amount of data allowed on               */
                /* connection establishment functions          */
long discon;    /* max amount of data allowed on               */
                /* t_snddis() and t_rcvdis() functions         */
long servtype;  /* service type supported by the               */
                /* transport provider                          */
long flags;     /* other info about the transport provider     */
フィールドは、次の値を取ります。
addr
struct sockaddr_in のサイズが戻されます。
options
おそらく指定または要求できるオプションの最大バイト数である 値 304 が戻されます。
tsdu
ゼロが戻され、TCP トランスポート提供者が TSDU の概念を サポートしないことを指示します。
etsdu
値 -1 が戻され、ETSDU のサイズに限界がないことを 指示します。
connect
値 -2 が戻され、接続確立関数を使用して、TCP トランスポート提供者がデータの送信を許可しないことを 指示します。
discon
値 -2 が戻され、打ち切り解放関数を使用して、トランスポート提供者がデータの送信を許可しないことを 指示します。
servtype
サポートされた唯一のサービス・タイプな ので、T_COTS は常に戻されます。
flags
T_SENDZERO ビットは常にこのフィールドに設定され、TCP トランスポート提供者がゼロ長の TSDU の送信をサポートする ことを指示します。

info がトランスポート・ユーザーによって NULL ポインターに 設定された場合には、プロトコル情報は t_open() によって 戻されません。

有効状態: T_UNINIT

戻り値

正常に実行された場合、t_open() は、有効なファイル記述子を戻します。

正常に実行されなかった場合、t_open() は -1 を戻して、errno を次のいずれかの値に設定します。
エラー・コード
説明
TBADFLAG
無効のフラグが指定されます。
TBADNAME
無効のトランスポート提供者名。
TPROTO
このエラーは、XTI と他に適切な XTI (t_errno) が ないトランスポート提供者の間で通信問題が検出されたことを 示しています。
TSYSERR
この関数の実行時に、システム・エラーが発生しました。

関連情報