如何去验证pan是否连接成功,如何清理DNS缓存

你现在的问题是什么呢? 手机端没有打开pan,连接上会立马收到pan 断开。我上面的是如果检测DHCP state 判断是否分配到ip

清cache没实现,在deepseek上回复这样改,你试试看
// 在 lwip/src/core/dns.c 中添加以下函数

/**
 * 清除 DNS 表中所有条目
 */
void dns_clear_table(void)
{
    int i;
    
    for (i = 0; i < DNS_TABLE_SIZE; i++) {
        struct dns_table_entry *entry = &dns_table[i];
        
        if (entry->state == DNS_STATE_DONE) {
            // 标记为未使用
            entry->state = DNS_STATE_UNUSED;
            entry->name[0] = 0;
            ip_addr_set_zero(&entry->ipaddr);
            entry->ttl = 0;
        }
    }
}

/**
 * 清除特定域名的 DNS 缓存
 */
void dns_remove_from_cache(const char *name)
{
    int i;
    size_t name_len;
    
    if (name == NULL) {
        return;
    }
    
    name_len = strlen(name);
    if (name_len > DNS_MAX_NAME_LENGTH - 1) {
        return;
    }
    
    for (i = 0; i < DNS_TABLE_SIZE; i++) {
        struct dns_table_entry *entry = &dns_table[i];
        
        if (entry->state == DNS_STATE_DONE &&
            strcmp(entry->name, name) == 0) {
            // 清除该条目
            entry->state = DNS_STATE_UNUSED;
            entry->name[0] = 0;
            ip_addr_set_zero(&entry->ipaddr);
            entry->ttl = 0;
            break;
        }
    }
}

关闭pan之后隔一段时间打开pan的log

你好,使用这个路径 SiFli-SDK\main\example\bt\pan\src 的pan例程,用下面main.c文件替换原来的,log文件也在下面,会同时出现LOG_I("pan connect successed \n");LOG_I("pan disconnect with remote device\n");打印
main.c (11.5 KB)
pan log.txt (685.5 KB)

我使用你的main.c,再连接上pan之后断连pan,log出来的是pan disconnect with remote device,并不会和pan connect successed一起出现啊

奇怪,我这里也是连接上pan之后断连pan,确实会每隔一个定时器时间3S,会同时触发连接和断开。我拉取了最新的main分支sdk,也是这样


你的手机型号?具体是操作手机哪个界面断开盘pan打开pan

华为和小米手机都是一样的

小米手机,操作的这个界面,蓝牙网络共享

研究了一下rt-thread这样写是可以验证网络是否连接成功