2. 查看了一下 non_sdk的例程中 使用 espconn_gethostbyname(pespconn, ESP_DOMAIN, &esp_server_ip, user_dns_found);
其中user_dns_found()为回调函数,
Code: Select all
LOCAL void user_dns_found(const char *name, ip_addr_t *ipaddr, void *arg)
{
struct espconn *pespconn = (struct espconn *)arg;
if (ipaddr == NULL)
{
printf("user_esp_platform_dns_found NULL\r\n");
if (++device_recon_count == 5)
{
device_status = DEVICE_CONNECT_SERVER_FAIL;
user_reset_mode();
}
return;
}
printf("user_dns_found() %d.%d.%d.%d\n",
*((uint8 *)&ipaddr->addr), *((uint8 *)&ipaddr->addr + 1),
*((uint8 *)&ipaddr->addr + 2), *((uint8 *)&ipaddr->addr + 3));
if (esp_server_ip.addr == 0 && ipaddr->addr != 0)
{
esp_server_ip.addr = ipaddr->addr;
memcpy(pespconn->proto.tcp->remote_ip, &ipaddr->addr, 4);
pespconn->proto.tcp->local_port = espconn_port();
pespconn->proto.tcp->remote_port = 8091;
printf("remote port: %d\n",pespconn->proto.tcp->remote_port);
espconn_regist_connectcb(pespconn, user_connect_cb);
espconn_regist_disconcb(pespconn, user_discon_cb);
espconn_regist_reconcb(pespconn, user_recon_cb);
user_connect(pespconn);
}
}
Code: Select all
LOCAL void user_connect_cb(void *arg)
{
struct espconn *pespconn = arg;
printf("user_connect_cb\r\n");
if (wifi_get_opmode() == STATIONAP_MODE )
{
wifi_set_opmode(STATION_MODE);
}
device_recon_count = 0;
espconn_regist_recvcb(pespconn, user_recv_cb);
espconn_regist_sentcb(pespconn, user_sent_cb);
user_sent_register_id(pespconn);
}
Code: Select all
LOCAL void user_recon_cb(void *arg, sint8 err)
{
struct espconn *pespconn = (struct espconn *)arg;
printf("user_recon_cb\r\n");
if (++device_recon_count == 5)
{
device_status = DEVICE_CONNECT_SERVER_FAIL;
user_reset_mode();
}
xTaskCreate(user_recon_task, "user_recon_task", 256, pespconn, 2, NULL);
}
Code: Select all
LOCAL void user_recon_task(void *arg)
{
struct espconn *pespconn = arg;
while(1)
{
vTaskDelay( 1000 / portTICK_RATE_MS );
printf("user_recon_task()\r\n");
user_reconnect(pespconn);
if(user_conn.state == ESPCONN_CONNECT)//Èç¹ûÁ¬½Ó³É¹¦ÔòÌø³ö
{
break;
}
}
vTaskDelete(NULL);
}
3. 在rtos_sdk上操作实际, 已经连接好远程服务器,但远程服务器重启后,无法自动重连远程服务器
4. 请问是否有具体的方法先断开远程服务器再新连接远程服务器,有没有具体的实现步骤谢谢,请解答。