DNS配置步骤:
1.将ESP8266配置为STA模式
参考day4
2.配置espconn结构体
espconn结构体需配置成员:
type:配置为0x10或 ESPCONN_TCP
proto.tcp->local_port:本地端口号
proto.tcp->remote_port:远端端口号
proto.tcp->remote_ip:远端ip地址(远端IP地址也要配置,但一般不知道远端IP,通过DNS得到后填写)
3.DNS
实例中为DNS回调函数格式,参数解释:
name:域名字符串
ipaddr:ip地址结构体指针
arg:网络结构体指针
在DNS回调函数中将ipaddr赋值给前面proto.tcp->remote_ip
4.通过TCP连接远端服务器
配置完成后ESP8266连接服务器,可使用连接成功回调函数注册其他函数
代码如下:
#define hostname "www.baidu.com" //域名字符串
#define wifi_ssid "1103"
#define wifi_password "hqyj1103"
/*******************************结构体定义**********************************/
struct station_config STA_s;
struct espconn TCP_s; //网络结构体
ip_addr_t addr; //域名解析后IP地址
/***********************************************************************/
os_timer_t tim1;
void ICACHE_FLASH_ATTR delay(u32 C_time) //毫秒延时函数
{
for(;C_time>0;C_time--)
os_delay_us(1000);
}
/*TCP建立成功回调函数*/
void TCP_success(void *arg)
{
os_printf("TCP_success\n");
}
/*域名解析回调函数*/
/*
* name:域名字符传指针
* ipaddr_t:ip地址结构体指针
* arg:网络结构体指针
* */
void DNS_f(const char *name,ip_addr_t *ipaddr, void *arg)
{
char ip_dns[4];
struct espconn *T_arg = (struct espconn *)arg;
if(ipaddr == NULL)
os_printf("DNS error\n");
else
{
os_printf("DNS success\n");
ip_dns[0] = ipaddr->addr