SOL_SOCKET、IPPROTO_IP、IPPROTO_TCP和NSPROTO_IPX选项级别
int PASCAL setsockopt ( __inSOCKETs, /* 套接字 */ __in int level , /* 选项级别 */ __in int optname , /* 选项级别 */ __in const char * optval , /* 目标选项的值 */ __in int optlen ); /* 目标选项的值 */ | int PASCAL getsockopt ( __in SOCKET s, /* 套接字 */ __in int level, /* 选项级别 */ __in int optname, /* 选项级别 */ __out char* optval, /* 返回目标选项的值 */ __inout int * optlen); /* 返回目标选项的值 */ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SOL_SOCKET 选项级别 | 选项值类型 | 获取/设置 | Socket 版本 | 说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_ACCEPTCONN | 布尔值 | 只能获取 | 1+ | 如为TRUE(真) ,表明套接字处于监听模式 Chapter 9 Page 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_BROADCAST | 布尔值 | 两种均可 | 1+ | 如TRUE,表明套接字已配置成对广播消息进行发送 Chapter 9 Page 2~3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_CONNECT_TIME | 整数 | 只能获取 | 1+ | 返回套接字建立连接的时间,以秒为单位,如尚未连接,返回0xffffffff (微软专用) Chapter 9 Page 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_DEBUG | 布尔值 | 两者均可 | 1+ | 如果TRUE,就允许调试输出 (W32不支持) Chapter 9 Page 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_DONTLINGER | 布尔值 | 两者均可 | 1 + | 如果是TRUE,则禁用SO_LINGER Chapter 9 Page 3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_LINGER | struct linger | 两者均可 | 1+ | 设置或获取当前的拖延值 Chapter 9 Page 5~6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_DONTROUTE | 布尔值 | 两者均可 | 1+ | 如果TRUE,便直接向网络接口发送消息,毋需查询路由表 (微软无效) Chapter 9 Page 4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_ERROR | 布尔值 | 只能获得 | 1+ | 返回错误状态 Chapter 9 Page 4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_EXCLUSIVEADDRUSE | 布尔值 | 两者均可 | 2+ | 如果TRUE,套接字绑定那个本地端口就不能重新被另一个进程使用 Chapter 9 Page 4~5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_KEEPALIVE | 布尔值 | 两者均可 | 1+ | 如果TRUE,套接字就会进行配置,在会话过程中发送”保持活动”消息 Chapter 9 Page 5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_MAX_MSG_SIZE | 无符号整数 | 只能获取 | 2+ | 对一个面向消息的套接字来说,一条消息的最大长度 Chapter 9 Page 6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_OOBINLINE | 布尔值 | 两者均可 | 1+ | 如果是TRUE,带外数据就会在普通数据流中返回 (W32不支持) Chapter 9 Page 6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_PROTOCOL_INFO | WSAPROTOCOL_INFO | 只能获得 | 2+ | 套接字绑定的那种协议的特征 Chapter 9 Page 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_RCVBUF | 整数 | 两者均可 | 1+ | 面向接收操作,为每个套接字分别获取或设置缓冲区长度 Chapter 9 Page 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_REUSEADDR | 布尔值 | 两者均可 | 1+ | 如果是TRUE,套接字就可与一个正由其他套接字使用的地址绑定到一起,或与处在T IME_WAIT状态的地址绑定到一起 Chapter 9 Page 7~8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SNDBUF | 布尔值 | 两者均可 | 1+ | 设置分配给套接字的数据发送缓冲区的大小 Chapter 9 Page 8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_TYPE | 整数 | 只能获取 | 1+ | 返回指定套接字的类型(如SOCK_DGRAM和SOCK_STREAM等等) Chapter 9 Page 8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SNDTIMEO | 整数 | 两者均可 | 1+ | 获取或设置套接字上的数据发送超时时间(以毫秒为单位) Chapter 9 Page 8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_RCVTIMEO | 整数 | 两者均可 | 1+ | 获取或设置与套接字上数据接收对应的超时时间值(以毫秒为单位) Chapter 9 Page 9 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_UPDATE_ACCEPT_CONTEXT | SOCKET | 两者均可 | 1+ | 更新SOCKET状态 Chapter 9 Page 9 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPPROTO_IP 选项级别 | 选项值类型 | 获取/设置 | Socket 版本 | 说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_OPTIONS | char[] | 两者均可 | 1+ | 设置或获取I P头内的I P选项 Chapter 9 Page 16~17 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_HDRINCL | 布尔值 | 两者均可 | 2+ | 如果是TRUE,IP头就会随即将发送的数据一起提交,并从读取的数据中返回,如下表 Chapter 9 Page 18 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
表IP_HDRINCL: Chapter 9 Page 18 <!--[if !supportMisalignedColumns]--> <!--[endif]-->
表IP_HDRINCL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_TOS | 整数 | 两者均可 | 1 + | IP 服务类型 Chapter 9 Page 19 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_TTL | 整数 | 两者均可 | 1 + | I P 协议的“存在时间” (TTL)参数 Chapter 9 Page 19 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_MULTICAST_IF | 无符号长整数 | 两者均可 | 1 + | 获取或设置打算从它上面发出多播数据的本地接口 Chapter 9 Page 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_MULTICAST_TTL | 整数 | 两者均可 | 1 + | 为套接字获取或设置多播数据包的存在时间 Chapter 9 Page 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_MULTICAST_LOOP | 布尔值 | 两者均可 | 1 + | 如果TRUE,发至多播地址的数据将原封不动地“反射”或“反弹”回套接字的进入缓冲区Chapter 9 Page 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_ADD_MEMBERSHIP | struct ip_mreq | 只能设置 | 1+ | 在指定的I P组内为套接字赋予成员资格 Chapter 9 Page 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_DROP_MEMBERSHIP | struct ip_mre1 | 只能设置 | 1+ | 将套接字从指定的I P组内删去(撤消成员资格) Chapter 9 Page 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IP_DONTFRAGMENT | 布尔值 | 两者均可 | 1+ | 如果是TRUE,就不对I P数据报进行分段 Chapter 9 Page 20 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPPROTO_TCP 选项级别 | 选项值类型 | 获取/设置 | Socket 版本 | 说明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TCP_NODELAY | 布尔值 | 两者均可 | 1+ | 若为TRUE, 就会在套接字上禁用Nagle算法 (只适用于流式套接字) Chapter 9 Page 21 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NSPROTO_IPX 选项级别 | 选项值类型 | 获取/设置 | Socket 版本 | 说明 (仅适用于Microsoft IPX/SPX) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_PTYPE | 整数 | 两者均可 | 1+ | 获取或设置I P X包的类型 Chapter 9 Page 21 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_FILTERPTYP | 整数 | 两者均可 | 1+ | 获取或设置准备过滤的IPX包之类型 Chapter 9 Page 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_STOPFILTERPTYPE | 整数 | 只能设置 | 1+ | 删除为指定IPX包设置的过滤器 Chapter 9 Page 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_DSTYPE | 整数 | 两者均可 | 1+ | 获取或设置SPX头中的数据流字段值 Chapter 9 Page 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_EXTENDED_ADDRESS | 布尔值 | 两者均可 | 1+ | 如果是TRUE,便允许对I P X包进行扩展定址 Chapter 9 Page 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_RECVHDR | 布尔值 | 两者均可 | 1 + | 如果是T R U E,就随接收调用一起,返回IPX头 Chapter 9 Page 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_MAXSIZE | 整数 | 只能获取 | 1 + | 返回I P X数据报的最大长度 Chapter 9 Page 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_ADDRESS | IPX_ADDRESS_DATA | 只能获取 | 1+ | 返回具备I P X能力之适配器的有关信息 Chapter 9 Page 22 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_GETNETINFO | IPX_NETNUM_DATA | 只能获取 | 1+ | 返回与一个指定I P X网络编号有关的信息 Chapter 9 Page 23 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_GETNETINFO_NORIP | IPX_ADDRESS_DATA | 两者均可 | 1+ | 返回与一个指定I P X网络编号有关的信息 Chapter 9 Page 23 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_SPXGETCONNECTIONSTATUS | IPX_SPXCONNSTATUS_ DATA | 只能获取 | 1+ | 返回与一个已建立连接的S P X套接字有关的信息 Chapter 9 Page 23 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_ADDRESS_NOTIFY | IPX_ADDRESS_DATA | 只能获取 | 1+ | 若I P X适配器的状态发生改变,则发出异步通知 Chapter 9 Page 24 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_MAX_ADAPTER_NUM | 整数 | 只能获取 | 1+ | 返回存在的IPX适配器个数 Chapter 9 Page 24~25 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_RERIPNETNUMBER | IPX_NETNUM_DATA | 只能获取 | 1+ | 返回一个网络编号的相关信息 Chapter 9 Page 25 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IPX_RECEIVE_BROADCAST | 布尔值 | 只能设置 | 1+ | 如果是TRUE,就不接收IPX广播包 Chapter 9 Page 25 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PX_IMMEDIATESPXZCK | 布尔值 | 两者均可 | 1+ | 如果是TRUE,就不在SPX连接上延迟发送ACK Chapter 9 Page 25~26 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int WSAAPI WSAIoctl ( __inSOCKETs, /* 套接字 */ __in DWORD dwIoControlCode , /* 预定义的标志 */ __in_bcount_opt (cbInBuffer) LPVOIDlpvInBuffer, /* 指向传递进入的值 */ __in DWORD cbInBuffer , /* 传入 数据的多少 */ __out_bcount_part_opt (cbOutBuffer, *lpcbBytesReturned) LPVOIDlpvOutBuffer, /* 返回信息缓冲区 */ __in DWORD cbOutBuffer , /* 缓冲区的字节长度 */ __out LPDWORD lpcbBytesReturned , /* 实际返回的字节数 */ __in_opt LPWSAOVERLAPPED lpOverlapped , /* 重叠 I/O */ __in_opt LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ); /* 重叠 I/O 回调函数 */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int PASCALFAR ioctlsocket ( __in SOCKET s , /* 套接字 */ __in long cmd , /* 预定义的标志 */ __inout u_long FAR * argp ); /* 命令参数 */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IO 控制命令 | 函数 | 输入 | 输出 | Socket 版本 | 说明 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
标准I/O控制命令 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FIONBIO | ioctlsocket/WSAIoct | 无符号长整数 | 无 | 1+ | 将套接字置入非锁定模式, 而若设为0值,意味着套接字进入锁定模式 Chapter 9 Page 26 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FIONREAD | 两者均可 | 无 | 无符号长整数 | 1+ | 返回在套接字上存在的数据量 Chapter 9 Page 26 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIOCATMARK | 两者均可 | 无 | 布尔值 | 1+ | 判断是否已读取了带外数据 Chapter 9 Page 26~27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
其他I/O控制命令 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_ENABLE_CIRCULAR-QUEUEING | WSAIoct | 布尔值 | 布尔值 | 2+ | 如接收缓冲区队列溢出,则首先丢弃最早收到的消息 Chapter 9 Page 27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_FIND_ROUTE | WSAIoct | SOCKADDR | 布尔值 | 2+ | 验证到指定地址的路由是否存在(W32不支持) Chapter 9 Page 27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_FLUSH | WSAIoct | 无 | 无 | 2+ | 判断是否已读取OOB数据 Chapter 9 Page 27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_BROADCAST_ADDRESS | WSAIoct | 无 | SOCKADDR | 2+ | 为套接字地址家族返回一个广播地址 Chapter 9 Page 28 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_GET_EXTENSION_FUNCTION_POINTER | WSAIoct | GUID | 函数指针 | 2+ | 取得基层提供者特有一个函数指针 Chapter 9 Page 28 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_CHK_QOS | WSAIoct | DWORD | DWORD | 2+ | 为指定的套接字设置QOS属性 Chapter 9 Page 28 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_GET_QOS | WSAIoct | 无 | QOS | 2+ | 返回与套接字关联在一起的QOS结构 Chapter 9 Page 29 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_SET_QOS | WSAIoct | QOS | 无 | 2+ | 为指定套接字设置QOS属性 Chapter 9 Page 29 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_MULTIPOINT_LOOPBACK | WSAIoct | 布尔值 | 布尔值 | 2+ | 设置或调查多播数据是否循环返回套接字 Chapter 9 Page 29 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_MULTICAST_SCOPE | WSAIoct | 整数 | 整数 | 2+ | 设置或获取多播数据的存在时间值 Chapter 9 Page 29~30 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_KEEPLIVE_VALS | WSAIoct | tcp_keepalive | tcp_keepalive | 2+ | 针对每一个连接,分别设置其TCP"保持活动”周期 Chapter 9 Page 30 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_RCVALL | WSAIoct | 无符号整数 | 无 | 2+ | 接收网络上的所有数据包 Chapter 9 Page 30 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_RCVALL_MCAST | WSAIoct | 无符号整数 | 无 | 2+ | 接收网络上的所有多播数据包 Chapter 9 Page 30 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_RCVALL_IGMPMCAST | WSAIoct | 无符号整数 | 无 | 2+ | 接收网络上的所有IGMP数据包 Chapter 9 Page 31 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_ROUTING_INTERFACE_QUERY | 两者均可 | SOCKADDR | 无 | 2+ | 可找到用来向远程机器发送数据的那个本地接口的地址 Chapter 9 Page 31 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_ROUTING_INTERFACE_CHANGE | WSAIoct | SOCKADDR | 无 | 2+ | 与一个端点连接的接口发生改变后,发出通知 Chapter 9 Page 31 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_ADDRESS_LIST_QUERY | WSAIoct | 无 | SOCKET_ADDRESS_LIST | 2+ | 返回套接字绑定的一系列接口的列表 Chapter 9 Page 32 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_ADDRESS_LIST_CHANGE | WSAIoct | 无 | 无 | 2+ | 本地接口发生变化时,发出通知 Chapter 9 Page 32 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IO_GET_INTERFACE_LIST | WSAIoct | 无 | INTERFCE_INFO[] | 2+ | 返回本地接口列表 Chapter 9 Page 33 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
安全套接字层的I/O控制命令 (Windows 95/98、Windows NT以及Windows 2000 均不支持) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SSL_GET_CAPABILITIES | WSAIoct | 无 | DWORD | 1 | 返回Winsock安全提供者的功能,仅定义了SO_CAP_CLIENT标志 Chapter 9 Page 33 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SSL_GET_FLAGS | WSAIoct | 无 | DWORD | 1 | 返回与套接字对应的s信道特有标志 Chapter 9 Page 34 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SSL_SET_FLAGS | WSAIoct | DWORD | 无 | 1 | 设置套接字s信道特有标志 Chapter 9 Page 34 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SSL_GET_PROTOCOLS | WSAIoct | 无 | SSLPROTOCOLS | 1 | 返回安全提供者支持的协议列表 Chapter 9 Page 34 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SSL_SET_PROTOCOLS | WSAIoct | SSLPROTOCOLS | 无 | 1 | 设置基层提供者应当支持的一个协议列表 Chapter 9 Page 34 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SSL_SET_VALIDATE_CERT_HOOK | WSAIoct | SSLVALIDATECERTHOOK | 无 | 1 | 为SSL身份凭据的接受设置校验函数 Chapter 9 Page 34 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SO_SSL_PERFORM_HANDSHAKE | WSAIoct | 无 | 无 | 1 | 在已建立连接的套接字上开始安全联络操作 Chapter 9 Page 35 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ATM I/O 控制命令 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_GET_NUMBER_OF_ATM_DEVICES | WSAIoct | 无 | DWORD | 2+ | 返回ATM适配器的数量 Chapter 9 Page 35 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_GET_ATM_ADDRESS | WSAIoct | DWORD | ATM_ADDRESS | 2+ | 为指定设备返回ATM地址 Chapter 9 Page 35 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_ASSOCIATE_PVC | WSAIoct | ATM_PVC_PARAMS | 无 | 2+ | 将套接字与一个永久虚拟回路关联起来 Chapter 9 Page 35 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SIO_GET_ATM_CONNECTION_ID | 两者均可 | 无 | ATM_CONNECTION_ID | 2+ | 获取同套接字关联在一起的ATM连接ID Chapter 9 Page 36 |