NETBIOS 网络基本输入/输出系统,是用于局域网通信的一套API。其作用是为了给局域网提供网络以及其他特殊功能,系统可以利用WINS服务、广播及Lmhost文件等多种模式将主机名解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。我们现在在零知开源平台上进行NETBIOS功能试验。
硬件我们本次使用零知-ESP8266;
软件使用零知开发工具,自带示例:
(1)先在零知开发工具中打开ESP_NBNST示例,或者复制下面的代码到零知开发工具中:
/**********************************************************
* 文件: x.ino by 零知实验室([url]www.lingzhilab.com[/url])
* -^^- 零知开源,让电子制作变得更简单! -^^-
* 时间: 2019/05/28 12:22
* 说明:
************************************************************/
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266NetBIOS.h>
#ifndef STASSID
#define STASSID "ssid"
#define STAPSK "passwd"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
ESP8266WebServer wwwserver(80);
String content;
static void handleRoot(void) {
content = F("<!DOCTYPE HTML>\n<html>Hello world from ESP8266");
content += F("<p>");
content += F("</html>");
wwwserver.send(200, F("text/html"), content);
}
void setup() {
Serial.begin(115200);
// Connect to WiFi network
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
wwwserver.on("/", handleRoot);
wwwserver.begin();
NBNS.begin("ESP");
}
void loop() {
wwwserver.handleClient();
}
(2)验证上述代码并上传到零知-ESP8266开发板;
(3)我们打开零知开发工具的串口调试窗口,可以看到如下信息:
(4)我们先用PING工具测下,可以看到IP和主机名都能成功通信:
现在我们在浏览器打开 http://ESP ,可以看到如下信息:
这和直接访问IP地址是一样的: