WiFi-ESP8266入门http(1)-建立服务器,直接发送网

 

 

 

 

 

#include <ESP8266WiFi.h>

/*** 该工程可以在2.4.0版本esp8266库中运行,没在更高版本库中进行测试 ***/

const char *ssid = "HUAWEI-H3VBKZ";
const char *password = "13991320168";

WiFiServer server(80);

String readString = ""; //建立一个字符串对象用来接收存放来自客户的数据

//响应头
String responseHeaders =
    String("") +
    "HTTP/1.1 200 OK\r\n" +
    "Content-Type: text/html\r\n" +
    "Connection: close\r\n" +
    "\r\n";

//网页
String myhtmlPage=
    String("") +
    "<html>" +
    "<head>" +
    "<meta charset=\"utf-8\">"+
    "    <title>ESP8266 配置信息</title>" +    
    "    <script defer=\"defer\">" +
    "        function ledSwitch() {" +
    "            var name = document.getElementById(\"wifiname\").value;"+
    "            var psw = document.getElementById(\"wifipwd\").value;"+       
    "            var xmlhttp;" +
    "            if (window.XMLHttpRequest) {" +
    "                xmlhttp = new XMLHttpRequest();" +
    "            } else {" +
    "                xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");" +
    "            }" +
    "            xmlhttp.onreadystatechange = function () {" +
    "                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {" +
    "                    document.getElementById(\"txtState\").innerHTML = xmlhttp.responseText;" +
    "                }" +
    "            }," +
    "            xmlhttp.open(\"GET\", \"Switch\"+name+psw, true);" +
    "            xmlhttp.send(); " +
    "        }" +
    "    </script>" +
    "</head>" +  
     "<body>" 
     
    "<h3>连接WIFI:</h3>"+
    
    "<form action=\"\"> "+
    "WIFI账号: <input type=\"text\" id=\"wifiname\"  />"+
    "</form>"+
    
    "<form action=\"\"> "+
    "WIFI密码: <input type=\"text\" id=\"wifipwd\"   />"+
    "</form>"+
    
    "<button type=\"button\" οnclick=\"ledSwitch()\"> 连接 </button>"+
    
    "<p>状态消息: <span id=\"txtState\"></span></p> "+

    "</body>" +
    "</html>";



bool isLedTurnOpen = false; // 记录LED状态

void setup()
{
    pinMode(D4, OUTPUT);
    digitalWrite(D4, HIGH); // 熄灭LED

    Serial.begin(115200);
    Serial.println();

    Serial.printf("Connecting to %s ", ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
    }
    Serial.println(" connected");

    server.begin();
    Serial.printf("Web server started, open %s in a web browser\n", WiFi.localIP().toString().c_str());
}

void loop()
{
    WiFiClient client = server.available(); //尝试建立客户对象
    if (client)                             //如果当前有客户可用
    {
        boolean currentLineIsBlank = true;
        Serial.println("[Client connected]");

        while (client.connected()) //如果客户端建立连接
        {
            if (client.available()) //等待有可读数据
            {
                char c = client.read(); //读取一字节数据
                readString += c;        //拼接数据
                /************************************************/
                if (c == '\n' && currentLineIsBlank) //等待请求头接收完成(接收到空行)
                {
                    //比较接收到的请求数据
                    if (readString.startsWith("GET / HTTP/1.1")) //如果是网页请求
                    {
                        client.print(responseHeaders); //向客户端输出网页响应
                        client.print(myhtmlPage);      //向客户端输出网页内容
                        client.print("\r\n");
                    }
                    else if (readString.startsWith("GET /Switch")) //如果是改变LED状态请求
                    {
                        if (isLedTurnOpen == false)
                        {
                            digitalWrite(D4, LOW); // 点亮LED
                            client.print("LED has been turn on");
                            isLedTurnOpen = true;
                        }
                        else
                        {
                            digitalWrite(D4, HIGH); // 熄灭LED
                            client.print("LED has been turn off");
                            isLedTurnOpen = false;
                        }
                    }
                    else
                    {
                        client.print("\r\n");
                    }
                    break;
                }

                if (c == '\n')
                {
                    currentLineIsBlank = true; //开始新行
                }
                else if (c != '\r')
                {
                    currentLineIsBlank = false; //正在接收某行中
                }
                /************************************************/
            }
        }
        delay(1);      //等待客户完成接收
        client.stop(); //结束当前连接:
        Serial.println("[Client disconnected]");

        Serial.println(readString); //打印输出来自客户的数据
        readString = "";
    }
}

  

转载于:https://www.cnblogs.com/kekeoutlook/p/9595893.html

WLAN是英文WirelessLAN的缩写,就是无线局域的意思。无线以太技术是一种基于无线传输的局域技术,与有线络技术相比,具有灵活、建迅速、个人化等特点。将这一技术应用于电信的接入领域,能够方便、灵活地为用户提供络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建的场合以及难以采用有线接入方式的环境等 作为全球公认的局域权威,IEEE802工作组建立的标准在过去二十年内在局域领域独领风骚。这些协议包括了802.3Ethernet协议、802.5TokenRing协议、802.3z100BASE-T快速以太协议。在1997年,经过了7年的工作以后,IEEE发布了802.11协议,这也是在无线局域领域内的第一个国际上被认可的协议。  在1999年9月,他们又提出了802.11b"HighRate"协议,用来对802.11协议进行补充,802.11b在802.11的1Mbps和2Mbps速率下又增加了5.5Mbps和11Mbps两个新的络吞吐速率。利用802.11b,移动用户能够获得同Ethernet一样的性能、络吞吐率、可用性。这个基于标准的技术使得管理员可以根据环境选择合适的局域技术来构造自己的络,满足他们的商业用户和其他用户的需求。802.11协议主要工作在ISO协议的最低两层上,并在物理层上进行了一些改动,加入了高速数字传输的特性和连接的稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值