IOControlCode 枚举

定义

指定 IOControl(Int32, Byte[], Byte[]) 方法支持的 IO 控制代码。

public enum class IOControlCode
public enum IOControlCode
type IOControlCode = 
Public Enum IOControlCode
继承
IOControlCode

字段

AbsorbRouterAlert 2550136837

此值等于 Winsock 2 SIO_ABSORB_RTRALERT 常数。

AddMulticastGroupOnInterface 2550136842

使用按索引标识的接口联接多播组。 此值等于 Winsock 2 SIO_INDEX_ADD_MCAST 常数。

AddressListChange 671088663

当套接字协议族的本地接口列表更改时启用接收通知。 此值等于 Winsock 2 SIO_ADDRESS_LIST_CHANGE 常数。

AddressListQuery 1207959574

返回套接字可绑定到的本地接口列表。 此值等于 Winsock 2 SIO_ADDRESS_LIST_QUERY 常数。

AddressListSort 3355443225

AddressListQuery 字段返回的结构进行排序,并为 IPv6 地址添加范围 ID 信息。 Windows XP 及更高版本的操作系统支持此控制代码。 此值等于 Winsock 2 SIO_ADDRESS_LIST_SORT 常数。

AssociateHandle 2281701377

将此套接字与附带接口的指定句柄关联。 有关其他详细信息,请参考 Winsock 2 参考或文档中特定附带接口的相应协议特定附录。 建议使用组件对象模型 (COM) 代替此 IOCTL,以发现并跟踪套接字可能支持的其他接口。 此控制代码是为了与某些系统保持向后兼容而提供的,在这些系统中,COM 不可用或由于某些其他原因而无法使用。 此值等于 Winsock 2 SIO_ASSOCIATE_HANDLE 常数。

AsyncIO 2147772029

当等待接收数据时启用通知。 此值等于 Winsock 2 FIOASYNC 常数。

BindToInterface 2550136840

将套接字绑定到指定的接口索引。 此值等于 Winsock 2 SIO_INDEX_BIND 常数。

DataToRead 1074030207

返回可读取的字节数。 此值等于 Winsock 2 FIONREAD 常数。

DeleteMulticastGroupFromInterface 2550136843

从多播组中移除套接字。 此值等于 Winsock 2 SIO_INDEX_ADD_MCAST 常数。

EnableCircularQueuing 671088642

当传入的消息队列已满时,将时间最久的已排队数据报替换为传入的数据报。 此值等于 Winsock 2 SIO_ENABLE_CIRCULAR_QUEUEING 常数。

Flush 671088644

放弃发送队列的内容。 此值等于 Winsock 2 SIO_FLUSH 常数。

GetBroadcastAddress 1207959557

返回一个 SOCKADDR 结构,该结构包含当前套接字地址族的广播地址。 返回的地址可与 SendTo 方法一起使用。 此值等于 Winsock 2 SIO_GET_BROADCAST_ADDRESS 常数。 此值仅可用于用户数据报协议 (UDP) 套接字。

GetExtensionFunctionPointer 3355443206

获取提供程序特定的函数,这类函数不是 Winsock 规范的一部分。 这些函数通过使用其提供程序分配的 GUID 进行指定。 此值等于 Winsock 2 SIO_GET_EXTENSION_FUNCTION_POINTER 常数。

GetGroupQos 3355443208

返回套接字组的服务质量 (QOS) 特性。 此值保留供将来使用,并且等于 Winsock 2 SIO_GET_GROUP_QOS 常数。

GetQos 3355443207

检索与套接字关联的 QOS 结构。 此值等于 Winsock 2 SIO_GET_QOS 常数。

KeepAliveValues 2550136836

控制 TCP Keep-Alive 数据包的发送以及发送间隔。 有关其他信息,请参阅 RFC 1122 的 4.2.3.6 节。 此值等于 Winsock 2 SIO_KEEPALIVE_VALS 常数。

LimitBroadcasts 2550136839

此值等于 Winsock 2 SIO_LIMIT_BROADCASTS 常数。

MulticastInterface 2550136841

设置用于传出多播数据包的接口。 该接口由索引进行标识。 此值等于 Winsock 2 SIO_INDEX_MCASTIF 常数。

MulticastScope 2281701386

控制路由器可以转发多播数据包的次数,也称作生存时间 (TTL) 或跃点计数。 此值等于 Winsock 2 SIO_MULTICAST_SCOPE 常数。

MultipointLoopback 2281701385

控制套接字发送的多播数据是否在套接字接收队列中显示为传入数据。 此值等于 Winsock 2 SIO_MULTIPOINT_LOOPBACK 常数。

NamespaceChange 2281701401

控制套接字是否在命名空间查询无效时接收通知。 Windows XP 及更高版本的操作系统支持此控制代码。 此值等于 Winsock 2 SIO_NSP_NOTIFY_CHANGE 常数。

NonBlockingIO 2147772030

控制套接字的阻止行为。 如果使用此控制代码指定的参数为零,套接字置于阻止模式下。 如果参数不为零,套接字置于非阻止模式下。 此值等于 Winsock 2 FIONBIO 常数。

OobDataRead 1074033415

返回有关等待接收的带外数据的信息。 在流式套接字上使用此控制代码时,返回值指示可用的字节数。

QueryTargetPnpHandle 1207959576

检索基础提供程序的 SOCKET 句柄。 此句柄可用于接收即插即用事件通知。 此值等于 Winsock 2 SIO_QUERY_TARGET_PNP_HANDLE 常数。

ReceiveAll 2550136833

支持接收网络上的所有 IPv4 数据包。 套接字必须有 InterNetwork 地址族,套接字类型必须是 Raw,并且协议类型必须为 IP。 当前用户必须属于本地计算机上的管理员组,并且套接字必须绑定到特定端口。 此值等于 Winsock 2 SIO_RCVALL 常数。

ReceiveAllIgmpMulticast 2550136835

支持接收网络上所有 Internet 组管理协议 (IGMP) 数据包。 套接字必须有 InterNetwork 地址族,套接字类型必须是 Raw,并且协议类型必须为 Igmp。 当前用户必须属于本地计算机上的管理员组,并且套接字必须绑定到特定端口。 此值等于 Winsock 2 SIO_RCVALL_IGMPMCAST 常数。

ReceiveAllMulticast 2550136834

支持接收网络上所有多播 IPv4 数据包。 这些数据包的目标地址范围介于 224.0.0.0 到 239.255.255.255 之间。 套接字必须有 InterNetwork 地址族,套接字类型必须是 Raw,并且协议类型必须为 Udp。 当前用户必须属于本地计算机上的管理员组,并且套接字必须绑定到特定端口。 此值等于 Winsock 2 SIO_RCVALL_MCAST 常数。

RoutingInterfaceChange 2281701397

支持在用于访问远程终结点的本地接口更改时接收通知。 此值等于 Winsock 2 SIO_ROUTING_INTERFACE_CHANGE 常数。

RoutingInterfaceQuery 3355443220

返回可用于连接到指定远程地址的接口地址。 此值等于 Winsock 2 SIO_ROUTING_INTERFACE_QUERY 常数。

SetGroupQos 2281701388

设置套接字组的服务质量 (QOS) 特性。 此值保留供将来使用,并且等于 Winsock 2 SIO_SET_GROUP_QOS 常数。

SetQos 2281701387

设置套接字的服务质量 (QOS) 特性。 QOS 用于定义套接字的带宽要求。 此值等于 Winsock 2 SIO_SET_QOS 常数。

TranslateHandle 3355443213

返回附带接口上下文中有效套接字的句柄。 此值等于 Winsock 2 SIO_TRANSLATE_HANDLE 常数。

UnicastInterface 2550136838

设置用于传出单播数据包的接口。 此值等于 Winsock 2 SIO_UCAST_IF 常数。

示例

下面的代码示例使用 DataToRead 参数值调用 IOControl(IOControlCode, Byte[], Byte[]) 该方法,并将结果与访问结果进行比较。Available 属性中找到的值。

void DisplayPendingByteCount( Socket^ s )
{
   array<Byte>^ outValue = BitConverter::GetBytes( 0 );
   
   // Check how many bytes have been received.
   s->IOControl( IOControlCode::DataToRead, nullptr, outValue );

   UInt32 bytesAvailable = BitConverter::ToUInt32( outValue, 0 );
   Console::Write( "server has {0} bytes pending,",
      bytesAvailable );
   Console::WriteLine( "Available property says {1}.",
      s->Available );
   return;
}
static void DisplayPendingByteCount(Socket s)
{
    byte[] outValue = BitConverter.GetBytes(0);

    // Check how many bytes have been received.
    s.IOControl(IOControlCode.DataToRead, null, outValue);

    uint bytesAvailable = BitConverter.ToUInt32(outValue, 0);
    Console.Write("server has {0} bytes pending. ",
        bytesAvailable);
    Console.WriteLine("Available property says {1}.",
                     s.Available);

    return;
}

注解

枚举 IOControlCode 提供用于指定套接字操作模式的命名值。 这些值是传递给 Windows Sockets 2 (Winsock 2) WSAIoctl 函数的控制代码。

适用于