JavaScript is required to for searching.
跳过导航链接
退出打印视图
编程接口指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  内存和 CPU 管理

2.  用于 Solaris Cluster 的远程共享内存 API

3.  会话描述协议 API

4.  进程调度程序

5.  地址组 API

6.  输入/输出接口

7.  进程间通信

8.  套接字接口

9.  使用 XTI 和 TLI 编程

什么是 XTI 和 TLI?

XTI/TLI 读/写接口

写入数据

读取数据

关闭连接

高级 XTI/TLI 主题

异步执行模式

高级 XTI/TLI 编程示例

异步联网

联网编程模型

异步无连接模式服务

使端点异步

异步网络传输

异步连接模式服务

异步建立连接

异步使用连接

异步打开

传输文件描述符

状态转换

XTI/TLI 状态

传出事件

传入事件

状态表

协议独立性准则

XTI/TLI 与套接字接口

套接字到 XTI/TLI 的等效项

XTI 接口的附加功能

10.  包过滤钩子

11.  传输选择和名称到地址映射

12.  实时编程和管理

13.  Solaris ABI 和 ABI 工具

A.  UNIX 域套接字

索引

状态转换

以下各节中的表介绍与 XTI/TLI 关联的所有状态转换。

XTI/TLI 状态

下表定义 XTI/TLI 状态转换中使用的状态以及服务类型。

表 9-1 XTI/TLI 状态转换和服务类型

状态
说明
服务类型
T_UNINIT
未初始化-接口的初始状态和最终状态
T_COTST_COTS_ORDT_CLTS
T_UNBND
已初始化但未绑定
T_COTST_COTS_ORDT_CLTS
T_IDLE
未建立连接
T_COTST_COTS_ORDT_CLTS
T_OUTCON
针对客户机暂挂的传出连接
T_COTST_COTS_ORD
T_INCON
针对服务器暂挂的传入连接
T_COTST_COTS_ORD
T_DATAXFER
数据传输
T_COTST_COTS_ORD
T_OUTREL
传出顺序释放(等待顺序释放请求)
T_COTS_ORD
T_INREL
传入顺序释放(等待发送顺序释放请求)
T_COTS_ORD

传出事件

下表中介绍的传出事件与指定传输例程(发送请求或响应传输提供器的例程)返回的状态相对应。在该表中,某些事件(例如 "accept")根据发生事件的上下文来区分。上下文基于以下变量的值:

表 9-2 传出事件

事件
说明
服务类型
opened
成功返回 t_open(3NSL)
T_COTST_COTS_ORDT_CLTS
bind
成功返回 t_bind(3NSL)
T_COTST_COTS_ORDT_CLTS
optmgmt
成功返回 t_optmgmt(3NSL)
T_COTST_COTS_ORDT_CLTS
unbind
成功返回 t_unbind(3NSL)
T_COTST_COTS_ORDT_CLTS
closed
成功返回 t_close(3NSL)
T_COTST_COTS_ORDT_CLT
connect1
在同步模式下成功返回 t_connect(3NSL)
T_COTST_COTS_ORD
connect2
异步模式下 t_connect(3NSL) 上的 TNODATA 错误,或者由于传输端点上到达断开请求而产生的 TLOOK 错误
T_COTST_COTS_ORD
accept1
成功返回 t_accept(3NSL),且 ocnt == 1fd == resfd
T_COTST_COTS_ORD
accept2
成功返回 t_accept(3NSL),且 ocnt== 1fd!= resfd
T_COTST_COTS_ORD
accept3
成功返回 t_accept(3NSL),且 ocnt > 1
T_COTST_COTS_ORD
snd
成功返回 t_snd(3NSL)
T_COTST_COTS_ORD
snddis1
成功返回 t_snddis(3NSL),且 ocnt <= 1
T_COTST_COTS_ORD
snddis2
成功返回 t_snddis(3NSL),且 ocnt > 1
T_COTST_COTS_ORD
sndrel
成功返回 t_sndrel(3NSL)
T_COTS_ORD
sndudata
成功返回 t_sndudata(3NSL)
T_CLTS

传入事件

传入事件与指定例程的成功返回相对应。这些例程返回来自传输提供器的数据或事件信息。不与例程的返回直接关联的唯一传入事件是 pass_conn,该传入事件在连接传送到其他端点时发生。虽然未在连接传递到的端点上调用 XTI/TLI 例程,但是会在该端点上发生事件。

在下表中,根据 ocnt 值(端点上未完成的连接请求计数)来区分 rcvdis 事件。

表 9-3 传入事件

事件
说明
服务类型
listen
成功返回 t_listen(3NSL)
T_COTST_COTS_ORD
rcvconnect
成功返回 t_rcvconnect(3NSL)
T_COTST_COTS_ORD
rcv
成功返回 t_rcv(3NSL)
T_COTST_COTS_ORD
rcvdis1
成功返回 t_rcvdis(3NSL) rcvdis1t_rcvdis(),且 onct <= 0
T_COTST_COTS_ORD
rcvdis2
成功返回 t_rcvdis(3NSL),且 ocnt == 1
T_COTST_COTS_ORD
rcvdis3
成功返回 t_rcvdis(3NSL),且 ocnt > 1
T_COTST_COTS_ORD
rcvrel
成功返回 t_rcvrel(3NSL)
T_COTS_ORD
rcvudata
成功返回 t_rcvudata(3NSL)
T_CLTS
rcvuderr
成功返回 t_rcvuderr(3NSL)
T_CLTS
pass_conn
接收传递的连接
T_COTST_COTS_ORD

状态表

状态表描述 XTI/TLI 状态转换。每个框都包含下一个状态,假设已给定当前状态(列)和当前事件(行)。空框表示无效状态/事件组合。每个框还可具有一个操作列表。必须按照框中指定的顺序完成操作。

研究状态表时,应了解以下内容:

下面各表中列出的某些状态转换提供传输用户必须执行的操作。每项操作都由通过下面列出的方法得出的数字表示:

下表显示了端点建立状态。

表 9-4 连接建立状态

事件/状态
T_UNINIT
T_UNBND
T_IDLE
opened
T_UNBND
bind
T_IDLE[1]
optmgmt(仅适用于 TLI)
T_IDLE
unbind
T_UNBND
closed
T_UNINIT

下表显示了连接模式下的数据传输。

表 9-5 连接模式状态:第 1 部分

事件/状态
T_IDLE
T_OUTCON
T_INCON
T_DATAXFER
connect1
T_DATAXFER
connect2
T_OUTCON
rcvconnect
T_DATAXFER
listen
T_INCON [2]
T_INCON [2]
accept1
T_DATAXFER [3]
accept2
T_IDLE [3] [4]
accept3
T_INCON [3] [4]
snd
T_DATAXFER
rcv
T_DATAXFER
snddis1
T_IDLE
T_IDLE [3]
T_IDLE
snddis2
T_INCON [3]
rcvdis1
T_IDLE
T_IDLE
rcvdis2
T_IDLE [3]
rcvdis3
T_INCON [3]
sndrel
T_OUTREL
rcvrel
T_INREL
pass_conn
T_DATAXFER
optmgmt
T_IDLE
T_OUTCON
T_INCON
T_DATAXFER
closed
T_UNINIT
T_UNINIT
T_UNINIT
T_UNINIT

下表显示了连接模式下的连接建立/连接释放/数据传输。

表 9-6 连接模式状态:第 2 部分

事件/状态
T_OUTREL
T_INREL
T_UNBND
connect1
connect2
rcvconnect
listen
accept1
accept2
accept3
snd
T_INREL
rcv
T_OUTREL
snddis1
T_IDLE
T_IDLE
snddis2
rcvdis1
T_IDLE
T_IDLE
rcvdis2
rcvdis3
sndrel
T_IDLE
rcvrel
T_IDLE
pass_conn
T_DATAXFER
optmgmt
T_OUTREL
T_INREL
T_UNBND
closed
T_UNINIT
T_UNINIT

下表显示了无连接模式状态。

表 9-7 无连接模式状态

事件/状态
T_IDLE
snudata
T_IDLE
rcvdata
T_IDLE
rcvuderr
T_IDLE