登录
【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】基于LwIP的Web Server 的演示与代码分享
开发板试用精选
2022-11-03
476
分享海报
开发板试用精选
807 文章
82.7w阅读
140粉丝
+关注
描述
本文来源电子发烧友社区,作者:soon顺soon, 帖子地址:
https://bbs.elecfans.com/jishu_2018138_1_1.html
硬件模块:
WF-H861-SSA1 WiFi 模组
实现功能:在上电后进入AP 模式,热点名称:Soon-WiFi-IoT,连接上热点后用浏览器访问
http://192.168.10.1/
显示“Hello Wifi IoT”
http://192.168.10.1/
wifiiot
显示“欢迎访问wifi-iot页面”
http://192.168.10.1/
error
显示“404-Page not found”
主要代码如下
#include
#include
#include
#include
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "wifi/ap_mode.h"
#include "lwip/sockets.h"
const unsigned char htmldata[] = "
<
ti
tle>Wifi-iot
欢迎访问wifi-iot页面
";
const unsigned char hellowifiiot[] = "
Hello Wifi IoT
";
const unsigned char errhtml[] = "
404-Page not found
";
/**
* [url=home.php?mod=space&uid=2666770]@Brief[/url] serve tcp connection
* [url=home.php?mod=space&uid=3142012]@param[/url] conn: connection socket
* @retval None
*/
void http_server(int conn)
{
int buflen = 1500;
int ret;
unsigned char recv_buffer[1500];
/* Read in the request */
ret = read(conn, recv_buffer, buflen);
if (ret <= 0)
{
close(conn);
printf("read failedrn");
return;
}
if (strncmp((char *)recv_buffer, "GET /wifiiot", 9) == 0)
{
write(conn, htmldata, sizeof(htmldata) - 1);
}
else if (strncmp((char *)recv_buffer, "GET /error", 9) == 0)
{
write(conn, errhtml, sizeof(errhtml) - 1);
}
else
{
write(conn, hellowifiiot, sizeof(hellowifiiot) - 1);
}
/* Close connection socket */
close(conn);
}
/**
* @brief http_task
* @param None
* @retval None
*/
static void http_task(void)
{
int sock, newconn, size;
struct sockaddr_in address, remotehost;
/* create a TCP socket */
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("can not create socket");
return;
}
/* bind to port 80 at any interface */
address.sin_family = AF_INET;
address.sin_port = htons(80);
address.sin_addr.s_addr = INADDR_ANY;
if (bind(sock, (struct sockaddr *)&address, sizeof(address)) < 0)
{
printf("can not bind socket");
close(sock);
return;
}
/* listen for connections (TCP listen backlog = 1) */
listen(sock, 1);
size = sizeof(remotehost);
while (1)
{
newconn = accept(sock, (struct sockaddr *)&remotehost, (socklen_t *)&size);
if (newconn >= 0)
{
printf("newconn");
http_server(newconn);
}
else
{
close(newconn);
}
}
}
static void *Lwip_Web_Task(const char *arg)
{
(void)arg;
wifi_start_softap();
http_task();
return NULL;
}
static void Lwip_Web_Entry(void)
{
osThreadAttr_t attr = {0};
attr.name = "Lwip_Web_Task";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = 8192;
attr.priority = osPriorityNormal;
if (osThreadNew((osThreadFunc_t)Lwip_Web_Task, NULL, &attr) == NULL)
{
printf("Falied to create Lwip_Web_Entry!n");
}
}
SYS_RUN(Lwip_Web_Entry);
复制代码
完整代码,如附件
lwip_webserver.7z
(2.69 KB, 下载次数: 3)
编译好的测试bin
Hi3861_wifiiot_app_allinone.bin
(761.04 KB, 下载次数: 5)
参考文章
LwIP之socket应用--WebServer和Modbus TCP
打开APP阅读更多精彩内容
点击阅读全文
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
wi-fi
HarmonyOS
HiSpark
【
HarmonyOS
HiSpark
Wi-Fi
IoT
HarmonyOS
智能家居
套件
试用
】智能门禁系统
2020-09-25
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
试用
连
连载
】开箱报告
2020-09-29
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
】群英荟萃,Hi3861开发板开箱大盘点
2020-10-27
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
HarmonyOS
智能家居
套件
试用
】基于
HiSpark
Wi-Fi
IoT
HarmonyOS
智能家居
套件
的温控面板
2020-10-29
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
试用
连载
】2-从DEMO中学习
代码
与控制
2020-11-07
0
[
HarmonyOS
HiSpark
Wi-Fi
IoT
HarmonyOS
智能家居
套件
]
试用
报告
2020-11-16
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
试用
连载
】开发
套件
初探
2020-11-22
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
试用
连载
】基于
LwIP
的
Web
Server
的
演示
与
代码
分享
2020-12-12
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
试用
连载
】CHAPTER 1 ---- 开箱报告
2020-12-31
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
智能家居
套件
体验 】
HarmonyOS
HiSpark
Wi-Fi
IoT
介绍+第一印象
2022-06-25
0
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
试用
连载
】播放音乐
2022-10-31
946
【
HarmonyOS
HiSpark
Wi-Fi
IoT
套件
试用
连载
】wifi连上不网
2022-10-31
892
全部
0
条评论
快来发表一下你的评论吧 !
发送
登录/注册
×
20
完善资料,
赚取积分