This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI-RTOS
我想知道如何让 TIRTOS 从 PPP 连接到蜂窝调制解调器中获取外部 DNS 服务器名称。
在 PPP 会话建立时,我会自动获取 IP 地址,但我需要能够使用 getaddrinfo 或 DNDGetHostByName 来获取目标主机 IP,但 PPP 会话在默认情况下没有配置 DNS 服务器。
我希望能够获取建议的网络 DNS 服务器、而不仅仅是使用静态地址。
我在这里看到了几篇文章、其中提到需要手动获取服务器地址、但没有说明我如何实际执行此操作的示例。
我使用的是 tirtos_tivac_2_16_01_14
您好 Barry、
您能为我澄清几点吗:
哪个 IP 地址? 是什么?
您正在调用 getaddrinfo 还是 DNSGetHostByName? 它们将返回错误?
谢谢、
Gerardo
您好 Gerardo
我正在使用 getaddrinfo
我通过代码进行搜索,发现 TIRTOS 中实现的 DHCP 不支持 DHCPPT_NAME_SERVERS,它为所有 DHCP 选项提供了标志,但只支持极少的这些选项。
因此我现在知道我无法 通过 DHCP 自动设置 DNS 服务器 IP 地址
我了解了如何在 设计时通过配置文件设置 DNS 服务器地址
VAR DNS = xdc.useModule('ti.ndk.config.Dns');
dns.externDnsServIp ="139.130.221.10";
作为一项解决方案、我现在正在寻找的是如何在运行时更改外部 DNS 服务器 IP、因此我可以为我的代码提供多个可能使用的 DNS 服务器、以便在其中一个服务器不可用时进行调整。
此致
Barry
我已经了解了如何在运行时设置/更改我的 DNS 服务器 IP 地址。
下面是我实现这一目标的方法
//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ //设置 DNS 服务器 IP 地址 //================================================================================= 静态空 SetDNSServer (char * serverip) { charIPString[16]; IPNipaddr; CI_IPNetCurrentAddr; handlehCfg; handlehCfgIpAddr; inti、 rc、size; hCfg = 0; //检查我们当前是否有 DNS 服务器项 rc = CfgGetEntry (hCfg、CFGTAG _SYSINFO、CFGITEM_DHCP_DOMAINNAMESERVER、1、&hCfgIpAddr); if (RC > 0) { while (RC > 0) { size = sizeof (CurrentAddr); RC = CfgEntryGetData (hCfgIpAddr、&size、(uint8_t *)&CurrentAddr); NtIPN2Str( CurrentAddr.ipaddr,IPString ); LogDiagMessage("COMs Remove DNS server Address '%s'"",IPString);// 删除当前静态 IP 条目 CfgIpeEntry (hCfg, hCfgAddr );RC=CfgGetIpEntry (0),hCfIpAddr } } //手动添加 DNS 服务器 ipaddr = inet_addr (serverip); if (ipaddr) { hCfg = 0; CfgAddEntry (hCfg、CFGTAG _SYSINFO、CFGITEM_DHCP_DOMAINNAMESERVER、0、 sizeof (ipaddr)、(uint8 *)&ipaddr、0); LogDiagMessage ("COMS Set DNS Server ='%s'、serverip"); } for (i=1;;i++) { hCfg = 0; //尝试获取 DNS 服务器 RC = CfgGetImmadi( hCfg、CFGTAG _SYSINFO、CFGITEM_DHCP_DOMAINNAMESERVER、I、4、 (uint8 *) ipaddr (&ipaddr); 如果(RC!= 4) 中断; //我们得到了一些东西 //将 IP 转换为字符串: NtIPN2Str( ipaddr,IPString ); LogDiagMessage ("COMS DNS Server %d ='%s'、I、IPString); } //SetDNSServer