本示例演示如何在 W6300 上将 HTTP Server 与 NetBIOS 功能相结合,通过 NetBIOS 名称解析动态 IP,再用该 IP 发起 HTTP 请求,解决 IP 地址变动带来的访问难题。在 HTTP Server 章节中,我们实现了通过 IP 地址访问 W6300 的 web 服务器,然而当启用 DHCP 时 IP 地址会动态变化,无法总是通过固定 IP 访问。
本例程将 HTTP Server 和 NetBIOS 两个应用层协议结合使用。HTTP Server 基于 TCP 80 端口提供 Web 内容服务,NetBIOS 基于 UDP 137 端口提供局域网名称解析服务。两者并行运行在主循环中:NetBIOS 负责将设备名称解析为动态 IP 地址,HTTP Server 负责处理浏览器的 Web 请求。PC 端只需在浏览器中输入 NetBIOS 名称即可访问设备网页,无需关心 IP 地址变化。
两个协议的对比:
协议
端口
传输层
功能
HTTP Server
TCP 80
TCP(面向连接)
提供 Web 页面内容服务
NetBIOS
UDP 137
UDP(无连接广播)
局域网名称解析服务
结合优势
HTTP Server 单独使用时,需知道设备 IP 才能访问。DHCP 启用后 IP 动态变化,每次访问前需查看 IP。结合 NetBIOS 后,PC 端只需在浏览器输入 http://WIZNET/,系统自动完成名称到 IP 的解析,再发起 HTTP 请求,实现"名称即地址"的便捷访问体验。
硬件连接与拓扑
请注意:
PC 和开发板需接入同一路由器(同一网段)。NetBIOS 基于 UDP 广播,广播报文只在同一网段内传播。路由器需开启 DHCP 服务。
wizchip_initialize();
network_init(ethernet_buf, &default_net_info);
reg_httpServer_webContent((uint8_t *)"index.html", (uint8_t *)index_page);
httpServer_init(http_tx_ethernet_buf,
http_rx_ethernet_buf,
_WIZCHIP_SOCK_NUM_ - 1,
socknumlist);
/* W6300 HTTP backend uses this 1 s tick for its TX-buffer timeout path. */
wiz_add_timer(httpServer_time_handler, 1000);
printf("Please enter /WIZNET in your browser to access the HTTP server\r\n");
MH2457 W6300 QSPI example start
W6300 HTTP Server and NetBIOS example
PHY link
The current Mbtis speed : 100Mbps
The current Duplex Mode : Full-Duplex
DHCP running
DHCP success!
====================================================================================================
W6300 network configuration : DHCP
MAC : 00:08:DC:12:34:56
IP : 192.168.2.24
Subnet Mask : 255.255.255.0
Gateway : 192.168.2.1
DNS : 192.168.2.1
====================================================================================================
Please enter /WIZNET in your browser to access the HTTP server
rem_ip_addr=192.168.2.20:137
netbios name query question
name is WIZNET
send response
请注意
测试实例需要 PC 端和 W6300 处于同一网段。在 PC 端打开浏览器,地址栏输入 http://WIZNET/ 即可通过 NetBIOS 名称访问设备网页。
串口显示 DHCP 成功获取 IP 后,当 PC 浏览器访问 http://WIZNET/ 时,W6300 先响应 NetBIOS 名称查询(name is WIZNET → send response),PC 端获取 IP 后发起 HTTP 请求,浏览器显示设备网页信息。