PROTOCOL_INFO结构包含有关协议的信息。
typedef struct _PROTOCOL_INFO {
DWORD dwServiceFlags;
INT iAddressFamily;
INT iMaxSockAddr;
INT iMinSockAddr;
INT iSocketType;
INT iProtocol;
DWORD dwMessageSize;
LPTSTR lpProtocol;
} PROTOCOL_INFO;
会员
dwServiceFlags
一组指定协议提供的服务的位标志。可以设置以下位标志中的一个或多个:
值 | 含义 |
XP_CONNECTIONLESS | 如果设置了该标志,则协议提供无连接(数据报)服务。如果该标志清楚,则协议提供面向连接的数据传输。 |
XP_GUARANTEED_DELIVERY | 如果设置了该标志,协议将保证发送的所有数据将到达目的地。如果这个标志是清楚的,那没有这样的保证。 |
XP_GUARANTEED_ORDER | 如果设置了该标志,协议将保证数据按照发送顺序到达。请注意,此特性不保证数据的传送,但只保证其顺序。如果该标志清除,则不保证发送的数据顺序。 |
XP_MESSAGE_ORIENTED | 如果设置了该标志,协议是面向消息的。面向消息的协议符合消息边界。如果这个标志是清楚的,协议是面向流的,消息边界的概念是无关紧要的。 |
XP_PSEUDO_STREAM | 如果设置了该标志,协议是面向消息的协议,忽略所有接收操作的消息边界。 当您不希望协议框架消息时,此可选功能非常有用。需要面向流特性的应用程序可以打开一个类型为SOCK_STREAM的套接字??,用于支持此函数的传输协议,而不管iSocketType的值。 |
XP_GRACEFUL_CLOSE | 如果设置了该标志,协议支持两阶段关闭操作,也称为“优雅”关闭操作。如果此标志清除,则协议仅支持中止关闭操作。 |
XP_EXPEDITED_DATA | 如果设置了该标志,协议支持加速数据,也称为“紧急数据”。 |
XP_CONNECT_DATA | 如果设置此标志,协议支持连接数据。 |
XP_DISCONNECT_DATA | 如果设置此标志,协议支持断开数据。 |
XP_SUPPORTS_BROADCAST | 如果设置了该标志,协议支持广播机制。 |
XP_SUPPORTS_MULTICAST | 如果设置该标志,协议支持多播机制。 |
XP_BANDWIDTH_ALLOCATION | 如果设置了该标志,则该协议支持向应用分配保证带宽的机制。 |
XP_FRAGMENTATION | 如果该标志发出,协议支持消息分片;物理网络MTU从应用程序中隐藏。 |
XP_ENCRYPTS | 如果设置了该标志,协议支持数据加密。 |
iAddressFamily
当您调用插座函数打开协议的套接字时,指定要作为【af】参数传递的值。该地址族值唯一地定义协议使用的协议地址(也称为SOCKADDR)的结构。
iMaxSockAddr
指定协议支持的套接字地址的最大长度。
iMinSockAddr
指定协议支持的套接字地址的最小长度。
iSocketType
当调用插座函数打开协议的套接字时,指定要作为【类型】参数传递的值。
请注意,如果在dwServiceFlags中设置了XP_PSEUDO_STREAM,则应用程序可以将SOCK_STREAM指定为插座的【类型】参数,而不考虑iSocketType的值。
协议
当调用插座函数打开协议的套接字时,指定要作为【协议】参数传递的值。
dwMessageSize
指定协议支持的最大消息大小。这是可以从主机发送或接收的消息的最大大小。对于不支持消息成帧的协议,可以发送给给定地址的消息的实际最大大小可能小于该值。
定义了以下特殊消息大小值:
值 | 含义 |
0 | 协议是面向流的;消息大小的概念是不相关的。 |
0xFFFFFFFF | 协议是面向消息的,但没有最大消息大小。 |
lpProtocol
指向提供协议名称的零终止字符串;例如,“SPX2”。
也可以看看
EnumProtocols, 插座