ネットワークインタフェース

接続の非同期使用

非同期状態で接続の待機を行う場合、プロセスは最初にサービスアドレスにバインドされた非ブロッキングエンドポイントを確立します。poll(2) の結果、または非同期通知によって接続要求の着信が伝えられた場合、プロセスは t_listen(3NSL) 関数を使用して接続要求を取得します。プロセスは接続を受け付けるために t_accept(3NSL) 関数を使用します。応答を行うエンドポイントは非同期データ転送を行うため個別に構成されている必要があります。

以下の例では非同期による接続要求を行う方法を示しています。


#include <tiuser.h>
int             fd;
struct t_call   *call;

	fd = .../*非ブロッキングエンドポイントを確立*/

	call = (struct t_call *) t_alloc(fd, T_CALL, T_ADDR);
	.../*call 構造体の初期化*/
	t_connect(fd, call, call);

	/*接続要求は非同期で進行*/

	.../*接続が受け付けられた通知を受信*/
	t_rcvconnect(fd, &call);

以下の例では非同期接続の待機の方法を示しています。


#include <tiuser.h>
int             fd, res_fd;
struct t_call   call;

	fd = ... /*非ブロッキングエンドポイントを確立*/

	.../*接続要求が着信した通知を受信*/

	call = (struct t_call *) t_alloc(fd, T_CALL, T_ALL);
	t_listen(fd, &call);

	.../*接続を受け付けるか拒否するかの判定*/
	res_fd = ... /*応答用に非ブロッキングエンドポイントを確立*/

	t_accept(fd, res_fd, call);