硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3378|回复: 10
收起左侧

[以太网] 请教一下新版RL_TCPnet下DHCP后如何查询IP GW DNS?

[复制链接]

2

主题

29

回帖

35

积分

新手上路

积分
35
发表于 2019-11-26 15:05:57 | 显示全部楼层 |阅读模式
请教一下新版RL_TCPnet下DHCP后如何查询IP GW DNS?
原来V6老的程序都是通过
extern LOCALM localm[];
这个方式来获取到DHCP后的IP等。
现在好像直接定义extern LOCALM localm[]; 会提示 LOCALM没有定义
我看直接在Net _Config.c 里面是可以定义不报错的

#include "net_config.h"
extern NET_LOCALM  LocM;

这个是可以的,其他文件里#include "net_config.h"后会提示ETH0接口没定义。


回复

使用道具 举报

2

主题

29

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2019-11-26 15:13:47 | 显示全部楼层
模板里面增加
#include "rl_net.h"
#include "net_config.h"
extern NET_LOCALM *const net_localm[4];
会报错
\PACK\Keil\MDK-Middleware\7.10.0\Network\Include\net_config.h(146): error:  #35: #error directive: "::Network:Interface: No interface enabled in configuration"
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2019-11-26 15:20:50 | 显示全部楼层
函数 netIF_GetOption
回复

使用道具 举报

2

主题

29

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2019-11-26 15:43:35 | 显示全部楼层
本帖最后由 housping 于 2019-11-27 11:47 编辑

谢谢,这样的话,只能一个一个去查了?DHCP成功后,有没有相应的状态或者标志位可以查的。
我自己造了一个一次读取的
void dhcpaddr(void){
        
  if(net_localm[NETIF_ETH]->IpAddr[0] == 0 && net_localm[NETIF_ETH]->IpAddr[1] == 0 && net_localm[NETIF_ETH]->IpAddr[2] == 0 && net_localm[NETIF_ETH]->IpAddr[3] == 0)
        {
                if (--dhcp_tout == 0) {
           
                }
        }
        else
        {
                        g_DHCPStatus = __TRUE;
                        printf("DHCP已经初始化成功,注意未使能DHCP也是返回成功的\r\n");                  
               
               
        mynet_localm.IpAddr[0] = net_localm[0]->IpAddr[0];
        mynet_localm.IpAddr[1] = net_localm[0]->IpAddr[1];
        mynet_localm.IpAddr[2] = net_localm[0]->IpAddr[2];
        mynet_localm.IpAddr[3] = net_localm[0]->IpAddr[3];        
        
        mynet_localm.NetMask[0] = net_localm[0]->NetMask[0];
        mynet_localm.NetMask[1] = net_localm[0]->NetMask[1];
        mynet_localm.NetMask[2] = net_localm[0]->NetMask[2];
        mynet_localm.NetMask[3] = net_localm[0]->NetMask[3];
               
        mynet_localm.DefGW[0] = net_localm[0]->DefGW[0];
        mynet_localm.DefGW[1] = net_localm[0]->DefGW[1];
        mynet_localm.DefGW[2] = net_localm[0]->DefGW[2];
        mynet_localm.DefGW[3] = net_localm[0]->DefGW[3];
        
        mynet_localm.PriDNS[0] = net_localm[0]->PriDNS[0];
        mynet_localm.PriDNS[1] = net_localm[0]->PriDNS[1];
        mynet_localm.PriDNS[2] = net_localm[0]->PriDNS[2];
        mynet_localm.PriDNS[3] = net_localm[0]->PriDNS[3];

        mynet_localm.SecDNS[0] = net_localm[0]->SecDNS[0];
        mynet_localm.SecDNS[1] = net_localm[0]->SecDNS[1];
        mynet_localm.SecDNS[2] = net_localm[0]->SecDNS[2];
        mynet_localm.SecDNS[3] = net_localm[0]->SecDNS[3];

        printf("IP:%d.%d.%d.%d\r\n",   net_localm[0]->IpAddr[0], net_localm[0]->IpAddr[1],net_localm[0]->IpAddr[2], net_localm[0]->IpAddr[3]);
        printf("MASK:%d.%d.%d.%d\r\n", net_localm[0]->NetMask[0], net_localm[0]->NetMask[1],net_localm[0]->NetMask[2], net_localm[0]->NetMask[3]);
        printf("GW:%d.%d.%d.%d\r\n",   net_localm[0]->DefGW[0], net_localm[0]->DefGW[1],net_localm[0]->DefGW[2], net_localm[0]->DefGW[3]);
         printf("DNS_Server:%d.%d.%d.%d\r\n",  net_localm[0]->PriDNS[0], net_localm[0]->PriDNS[1],net_localm[0]->PriDNS[2], net_localm[0]->PriDNS[3]);
     

  }
}
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2020-12-2 16:16:33 | 显示全部楼层
DHCP开启后   执行完这个函数init_TcpNet ()  ,  获取结果是不是就已经出来了???硬汉
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2020-12-2 16:23:49 | 显示全部楼层
硬汉...........................??????????????
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2020-12-2 17:05:53 | 显示全部楼层
这玩意儿  很好用
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2020-12-2 17:12:50 | 显示全部楼层
                timer_tick ();
                if (mem_test (&localm[NETIF_ETH], 0, IP_ADRLEN) == __FALSE)
                {/* Success, DHCP has already got the IP address. */
//                        nlocalm[0].IpAdr[0] = localm[NETIF_ETH].IpAdr[0];
//                        nlocalm[0].IpAdr[1] = localm[NETIF_ETH].IpAdr[1];
//                        nlocalm[0].IpAdr[2] = localm[NETIF_ETH].IpAdr[2];
//                        nlocalm[0].IpAdr[3] = localm[NETIF_ETH].IpAdr[3];
                        break;
                }
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2020-12-2 17:26:15 | 显示全部楼层
str_scomp  这个函数好像不是C标准库????  
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2020-12-3 09:33:34 | 显示全部楼层
wlx18682353162 发表于 2020-12-2 16:16
DHCP开启后   执行完这个函数init_TcpNet ()  ,  获取结果是不是就已经出来了???硬汉

注意,不是立即出来的,要稍等一会。
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2020-12-3 14:32:03 | 显示全部楼层
100MS一次  设置10次应该够了  
timer_tick不刷新这个函数 是查不出来的    非常关键
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-19 08:17 , Processed in 0.179830 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表