Code:
LOCAL void ICACHE_FLASH_ATTR
user_udp_recv_cb(void *arg, char *pusrdata, unsigned short length)
{
os_printf("recv udp data: %s\n", pusrdata);
struct espconn *pesp_conn = arg;
remot_info *premot = NULL;
sint8 value = ESPCONN_OK;
if (espconn_get_connection_info(pesp_conn,&premot,0) == ESPCONN_OK){
pesp_conn->proto.tcp->remote_port = premot->remote_port;
pesp_conn->proto.tcp->remote_ip[0] = premot->remote_ip[0];
pesp_conn->proto.tcp->remote_ip[1] = premot->remote_ip[1];
pesp_conn->proto.tcp->remote_ip[2] = premot->remote_ip[2];
pesp_conn->proto.tcp->remote_ip[3] = premot->remote_ip[3];
espconn_sent(pesp_conn, pusrdata, os_strlen(pusrdata));
}
}
Statistics: Posted by ESP_Faye — Fri Dec 04, 2015 11:21 am
Code:
void ICACHE_FLASH_ATTR init_dns() {
dnsConn.type=ESPCONN_UDP;
dnsConn.state=ESPCONN_NONE;
dnsUdp.local_port=(int)53;
dnsConn.proto.udp=&dnsUdp;
espconn_regist_recvcb(&dnsConn, dnsQueryReceived);
int res = espconn_create(&dnsConn);
NODE_DBG("DNS server init, conn=%p , status=%d", &dnsConn,res);
}
static void ICACHE_FLASH_ATTR dnsQueryReceived(void *arg, char *data, unsigned short length) {
struct espconn *conn=arg;
...
// SDK 1.5 returns IP=0.0.0.0 Port=0
// SDK 1.3 returns IP=192.168.4.2 Port=<Some Valid#>
NODE_DBG("DNS Remote[IP=" IPSTR "][Port=%d]",
IP2STR(&conn->proto.udp->remote_ip), conn->proto.udp->remote_port);
espconn_send(conn, (uint8_t*)response, idx+16);
}
Statistics: Posted by ming — Fri Dec 04, 2015 10:17 am
Statistics: Posted by ESP_Faye — Thu Dec 03, 2015 10:10 am