FreeRTOS_sockets.h
uint32_t FreeRTOS_gethostbyname( const uint8_t *pcHostName );
对主机名执行域名系统 (DNS) 查找,返回主机 IP
地址。 例如,假设 DNS 服务器响应查找请求,则调用
FreeRTOS_gethostbyname( "www.freertos.org" ) 后会返回
freertos.org 的 IP 地址。
必须在 FreeRTOSIPConfig.h 中设置 ipconfigUSE_DNS 的值为1,才能使用 FreeRTOS_gethostbyname()
才可用。
DNS查找只能在 FreeRTOS-Plus-TCP 知道
DNS 服务器的 IP 地址的情况下执行。 如果 FreeRTOSIPConfig.h 中的 ipconfigUSE_DHCP 值为 0 ,则 DNS 服务器地址会作为
FreeRTOS_IPInit() 函数的参数传递到 FreeRTOS-Plus-TCP。 如果
FreeRTOSIPConfig.h 中的 ipconfigUSE_DHCP 值为 1 ,则 DNS 服务器地址可从
DHCP 服务器获取。
FreeRTOS_gethostbyname() 将在每次
DNS 请求后等待响应(最长等待时间为 200 毫秒),在此期间处于阻塞状态,以便其他任务的执行。其中最多可发送
5 个 DNS 请求。
参数:
pcHostName
|
以 0 结尾的标准字符串,其中包含正在查找的主机的名称
。
|
返回:
如果查找成功,则返回以网络字节顺序排列的主机 IP
地址。
如果查找失败,则返回 0。
用法示例:
#include "FreeRTOS_sockets.h"
void aFunction( void )
{
uint32_t ulIPAddress;
int8_t cBuffer[ 16 ];
ulIPAddress = FreeRTOS_gethostbyname( "www.freertos.org" );
if( ulIPAddress != 0 )
{
FreeRTOS_inet_ntoa( ulIPAddress, ( char * ) cBuffer );
printf( "www.FreeRTOS.org is at IP address %srn", cBuffer );
}
else
{
printf( "DNS lookup failed. " );
}
}
Example use of the FreeRTOS_gethostbyname() API function
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.