|
BOOL IsProtocolAvailable( |
|
INT nAddressFamily, |
|
|
INT nProtocol |
|
); |
The IsProtocolAvailable method determines if the
operating system supports creating a socket for the specified address
family and protocol.
Parameters
- nAddressFamily
- An integer which identifies the address family that should be
checked. It should be one of the following values:
Value |
Description |
INET_ADDRESS_IPV4 |
Specifies that the function should determine if it can
create an Internet Protocol version 4 (IPv4) socket. This
requires that the system have an IPv4 TCP/IP stack bound to at
least one network adapter on the local system. All Windows
systems include support for IPv4 by default. |
INET_ADDRESS_IPV6 |
Specifies that the function should determine if it can
create an Internet Protocol version 6 (IPv6) socket. This
requires that the system have an IPv6 TCP/IP stack bound to at
least one network adapter on the local system. Windows XP and
Windows Server 2003 includes support for IPv6, however it is not
installed by default. Windows Vista and later versions include
support for IPv6 and enable it by default. |
- nProtocol
- An integer which identifies the protocol that should be
checked. It should be one of the following values:
Value |
Description |
INET_PROTOCOL_TCP |
Specifies the Transmission Control Protocol. This protocol
provides a reliable, bi-directional byte stream. This requires
that the system be capable of creating a stream socket using the
specified address family. |
INET_PROTOCOL_UDP |
Specifies the User Datagram Protocol. This protocol is
message oriented, sending data in discrete packets. This
requires that the system be capable of creating a datagram
socket using the specified address family. |
Return Value
If the the system is capable of creating a socket using the
specified address family and protocol, this method will return a
non-zero value. If the combination of address family and protocol is
not supported, this method will return a value of zero.
Remarks
The IsProtocolAvailable method is used to determine if
the operating system supports creating a particular type of socket.
Typically it is used by an application to determine if the system has
an IPv6 TCP/IP stack installed and configured. By default, all Windows
systems will have an IPv4 stack installed if the system
has a network adapter. However, not all systems may have an IPv6
stack installed, particularly older Windows XP and Windows Server 2003
systems. Note that if an IPv6 stack is not installed, the library will
not recognize IPv6 addresses and cannot resolve host names that only
have an IPv6 (AAAA) record, even if the address or host name is valid.
Example
if (!pSocket->IsProtocolAvailable(INET_ADDRESS_IPV6, INET_PROTOCOL_TCP))
{
AfxMessageBox(_T("This system does not support IPv6"), MB_ICONEXCLAMATION);
return;
}
Requirements
Minimum Desktop Platform: Windows 7 Service Pack 1
Minimum Server Platform: Windows Server 2008 R2 Service Pack 1
Header File: cswsock11.h
Import Library: cswskv11.lib
See Also
GetAddress,
GetHostAddress,
GetHostName
|
|