下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

FreeRTOS_gethostbyname()

[FreeRTOS-Plus-TCP API 引用]

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。

用法示例:


/* FreeRTOS-Plus-TCP sockets include. */
#include "FreeRTOS_sockets.h"

void aFunction( void )
{
uint32_t ulIPAddress;
int8_t cBuffer[ 16 ];

/* Lookup the IP address of the FreeRTOS.org website. */
ulIPAddress = FreeRTOS_gethostbyname( "www.freertos.org" );

if( ulIPAddress != 0 )
{
/* Convert the IP address to a string. */
FreeRTOS_inet_ntoa( ulIPAddress, ( char * ) cBuffer );

/* Print out the IP address. */
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.