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

#include

/*** 该工程可以在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("") +

"" +

"

" +

""+

"

ESP8266 配置信息" +

"

" 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(); " +

" }" +

" " +

"" +

"

"

"

连接WIFI:

"+

"

"+

"WIFI账号: "+

"

"+

"

"+

"WIFI密码: "+

"

"+

" 连接 "+

"

状态消息:

"+

"" +

"";

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 = "";

}

}

【SSRS】入门篇(二) -- 建立数据源

原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书)

3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP) 然后就是等着..... 假设可以了 咱呢是配置MQTT实现SSL安全加密通信,所以 ...

3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(购买域名,域名绑定IP)

2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(监听Wi-Fi和APP的数据) 因为安全连接是和域名绑在一块的,所以需要申请域名 有没有不知道域名是什么的, ...

1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(方案总揽)

我的这个升级篇的代码适用于自己所有的带WIFI和GPRS模块的开发板,升级功能实质上是通过MQTT把数据发给WIFI和GPRS模块,然后模块进行保存和运行. 这个升级程序是当时自己花了两个星期的时间写 ...

ESP8266 station模式下建立client、server TCP连接

程序实现内容: 1.在station模式下,ESP8266作为client.server进行TCP连接2.实现数据的发送.接收(同时回传)实现思路:TCP网络通信分层为:应用层.网络层.数据链路层.物 ...

ESP8266入门学习笔记1:资料获取

乐鑫官网:https://www.espressif.com/zh-hans/products/hardware/esp8266ex/overview 乐鑫资料:https://www.espress ...

【转】《从入门到精通云服务器》第六讲—OpenStack基础

前五期的受到了广泛好评,收到留言,有很多读者对云计算相关的技术非常感兴趣.应观众要求,我们这期要安利一条纯技术内容.准备好瓜子.花生,随小编一起进入OpenStac ...

随机推荐

virtualbox设置共享文件夹代替sftp同步代码

通常的开发场景: 代码放在virtualbox上运行,本地的IDE通过sftp实现和虚拟机的代码同步. 有 一个不能避免的问题是,当使用git时,如果装在virtualbox端,那么每次virtual ...

Ajax请求内嵌套Ajax请求的方法

前段时间做项目,需要把全国省市的两个XML文件整合成一个JSON格式的数据,手写的话觉得数据太多了,而且容易出错,于是就想到了用Ajax嵌套的方法来解决,就想平时用Ajax的方法直接嵌套,都会先读出外 ...

SRM 441(1-250pt, 1-500pt)

DIV1 250pt 题意:用数组A表示置换,由该置换得到数组B(B[0] = 0, B[i] = A[B[i-1]]).给定A,求一个A',使得由A'得到的B为单循环置换且A'与A的差距最小.定义A ...

OSG项目经验2<在场景中添加文字面版>

添加文字版需要用到osg的三个名字空间:                         osgText::Text,这个类用来添加文字和设置文字的一些属性:                     ...

【翻译】Jay Kreps - 为何流处理中局部状态是必要的

译者注: 原文作者是 Jay Kreps,也是那篇著名的

Gist - ES6 Proxy

Introduction "Proxy" is a frequently used pattern in both virtual world and real world. Th ...

零基础到精通Web渗透测试的学习路线

小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...

java 方法的重载

方法的重载:一个类中允许出现一个以上的同名方法,必须保证同名方法的参数列表不同    好处:方便阅读,优化程序设计    重载规则:重载方法名相同,但每个重载方法都必须有一个独一无二的参数类型列表,方 ...

ORACLE 存储过程中保存用户自定义异常信息的一种方式

1.创建错误日志表: create table REP_LOGS ( log_s_no NUMBER not null, log_date DATE default sysdate not null, ...

11.14 redis

2018-11-14 10:07:39 购物车有思路,用django中redis来做!!!具体思路参考下面笔记 回学校后,把笔记里面面试题都认真整理一下!!!!!! 越努力,越幸运!永远不要高估自己! ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值