WSAStringToAddressA 函数 (winsock2.h)
WSAStringToAddress 函数将标准文本呈现形式中的网络地址转换为 sockaddr 结构中的数字二进制形式,适合传递给采用此类结构的 Windows 套接字例程。
语法
INT WSAAPI WSAStringToAddressA(
[in] LPSTR AddressString,
[in] INT AddressFamily,
[in, optional] LPWSAPROTOCOL_INFOA lpProtocolInfo,
[out] LPSOCKADDR lpAddress,
[in, out] LPINT lpAddressLength
);
参数
[in] AddressString
指向零终止字符串的指针,其中包含要转换的标准文本形式的网络地址。
[in] AddressFamily
AddressString 参数指向的网络地址的地址系列。
[in, optional] lpProtocolInfo
与要使用的提供程序关联的 WSAPROTOCOL_INFO 结构。 如果这是 NULL,则调用将路由到支持所指示 AddressFamily的第一个协议的提供程序。
[out] lpAddress
指向填充 sockaddr 结构(如果函数成功)的缓冲区的指针。
[in, out] lpAddressLength
指向 lpAddress 参数指向的缓冲区长度(以字节为单位)的指针。 如果函数调用成功,此参数将返回指向 lpAddress 参数中返回的 sockaddr 结构大小的指针。 如果指定的缓冲区不够大,该函数将失败,并出现 WSAEFAULT 的特定错误,并且此参数使用所需的大小(以字节为单位)进行更新。
返回值
如果操作成功,则 WSAStringToAddress 的返回值为零。 否则,返回值SOCKET_ERROR,可以通过调用 WSAGetLastError来检索特定的错误号。
错误代码 | 意义 |
---|---|
lpAddress 参数指向的缓冲区太小。 传入更大的缓冲区。 | |
函数无法将字符串转换为 sockaddr。 有关详细信息,请参阅以下“备注”部分。 | |
尚未初始化WS2_32.DLL。 在调用任何 Windows 套接字函数之前,应用程序必须先调用 WSAStartup。 | |
内存不足,无法执行操作。 |
言论
WSAStringToAddress 函数将标准文本形式的网络地址转换为 sockaddr 结构中的数字二进制形式。
如果可能,地址的任何缺失组件都将默认为合理的值。 例如,缺少的端口号默认为零。 如果调用方希望特定提供程序完成转换,则应在 lpProtocolInfo 参数中提供相应的 WSAPROTOCOL_INFO 结构。
WSAStringToAddress 函数失败(并返回 WSAEINVAL),如果 SOCKADDR_IN 结构的 sin_family 成员(以 sockaddr 结构的形式传入 lpAddress 参数),则不会设置为AF_INET或AF_INET6。
在 Windows XP 上添加了对使用 WSAStringToAddress 函数的 IPv6 地址的支持,Service Pack 1(SP1)及更高版本。 还必须在本地计算机上安装 IPv6,WSAStringToAddress 函数才能支持 IPv6 地址。
Windows Phone 8: Windows Phone 8 及更高版本的 Windows Phone 应用商店应用支持此功能。
Windows 8.1 和 Windows Server 2012 R2:Windows 8.1、Windows Server 2012 R2 及更高版本中的 Windows 应用商店应用支持此函数。
注意
winsock2.h 标头将 WSAStringToAddress 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8.1、Windows Vista [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows Server 2003 [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | winsock2.h |
库 | Ws2_32.lib |
DLL | Ws2_32.dll |