ESP8266 webserver
简单测试了一下,还不错。连上ESP8266的热点,打开IE浏览器地址栏输入192.168.4.1回车可看到HTTP测试成功 字样。使用其他的浏览器(谷歌)结果会下载一个文件,打开下载的文件可看到成功字样,不知道什么情况,我html小白一枚。下面是程序,很简单。
全局变量
-
uint8_t http_head[] = "HTTP/1.1 200 OK\r\n\r\nHTTP测试成功";
-
struct espconn tcpserver;
几个回调函数
-
void ICACHE_FLASH_ATTR
-
tcpserver_recon_cb(void *arg, sint8 errType)//异常断开回调
-
{
-
struct espconn *pespconn = (struct espconn *)arg;
-
os_printf("\r\n异常断开");
-
}
-
void ICACHE_FLASH_ATTR
-
tcpserver_discon_cb(void *arg)//正常断开回调
-
{
-
struct espconn *pespconn = (struct espconn *)arg;
-
os_printf("\r\n正常断开");
-
}
-
void ICACHE_FLASH_ATTR
-
tcpclient_sent_cb(void *arg)//发送回调
-
{
-
struct espconn *pespconn = (struct espconn *)arg;
-
espconn_disconnect(pespconn);//断开连接
-
}
监听函数
-
void ICACHE_FLASH_ATTR
-
tcpserver_listen(void *arg)//服务器被链接回调
-
{
-
struct espconn *pespconn = (struct espconn *)arg;
-
espconn_regist_reconcb(pespconn, tcpserver_recon_cb);//开启异常断开回调
-
espconn_regist_disconcb(pespconn, tcpserver_discon_cb);//开启正常断开回调
-
espconn_regist_recvcb(pespconn, tcpserver_recv);//开启接收回调
-
espconn_regist_sentcb(pespconn, tcpclient_sent_cb);//开启发送成功回调
-
}
接收函数
-
void ICACHE_FLASH_ATTR
-
tcpserver_recv(void *arg, char *pdata, unsigned short len)//接收函数
-
{
-
char * http_flg = NULL;
-
unsigned short i,web_len = 0;
-
struct espconn *pespconn = (struct espconn *)arg;
-
http_flg = strstr(pdata,"HTTP");
-
if(http_flg != NULL){
-
espconn_send(pespconn,http_head,sizeof(http_head));
-
}
-
}
配置函数
-
void ICACHE_FLASH_ATTR
-
tcp_server(void)//开启tcp服务器
-
{
-
tcpserver.proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));
-
tcpserver.proto.tcp->local_port = 80;//监听本地端口号
-
tcpserver.type = ESPCONN_TCP;
-
tcpserver.state = ESPCONN_NONE;
-
espconn_regist_connectcb(&tcpserver, tcpserver_listen);//链接成功回调
-
espconn_accept(&tcpserver);//开启TCP服务器
-
espconn_regist_time(&tcpserver, 1, 0);//设置服务器超时时间为1秒
-
}
主函数
-
void ICACHE_FLASH_ATTR
-
sys_init_cb(void)//初始化完成后回调函数
-
{
-
os_printf("\r\nHTTP测试");
-
tcp_server();//开启tcp服务器
-
}
-
void ICACHE_FLASH_ATTR
-
user_init(void)
-
{
-
uart_init(115200,115200);
-
wifi_set_opmode_current(STATIONAP_MODE);//设置WiFi工作模式
-
system_init_done_cb(sys_init_cb);//创建初始化完成后回调函数
-
}