PC版本的服务器客户端模拟器记得以管理员身份运行,本节使用固件可从百度云下载,<这里,密码:ojoi>
一、ESP8266的三种工作方式
- AP模式
- STA模式
- AP+STA模式
AP模式就仅仅相当于路由器功能可以发出信号。 当然我们知道路由器不仅仅能发出信号,当然可以接受信号的,所以就有了STA模式的基站功能就是接受信号。
接受完信号是不是还能广播出去呢?当然可以了!所以就有了AP+STA模式的工作方式
二、ESP8266建立TCP服务器
2.1、Step1
AT+CWMODE=2 //配置ESP8266模块为AP模式(即路由器模式,可以发出WiFi)
出现 no change的字样也无所谓,只要再用AT+CWMODE? 看一下是不是处于AP模式就OK
模式:
AT+CWMODE=? //响应返回当前可支持哪些模式
AT+CWMODE? //响应当前处于哪种模式
AT+CWMODE=2 //1-Station 模式,2-AP 模式,3-AP 兼 Station 模式
2.2、Step2
AT+RST //重启模块使AT+CWMODE=2模式生效
对应ESP8266的WiFi打开
2.3、Step3
AT+CIPMUX=1 //启动多连接
多路连接
-
多个客户端连接。
-
ESP8266
最多允许5个
客户端进行连接,每个客户端根据连接先后顺序对应分配id0~4
通信方式呢是TCP/UDP通信。
UDP
- 接收端和发送端,
Server
和Client
- 面向无连接的通信,速度较
TCP
快 - 向指定的IP 和“指定的端口”发数据到指定的电脑和指定的软件下
TCP
- 分为服务端和客户端,
Server
和Client
- 面向有连接的通信,速度较UDP慢
- 需要配置远程主机服务器IP地址及端口
- ESP8266做服务器时,IP固定为192.168.4.1
- 不放心可通过**
AT+CIFSR
**查看模块IP
注意:
- TCP连接通信的时候,相应设备必须处于同一个网络中,即处于同一个局域网中!!!!
- AP模式下ESP8266做服务端时就是,手机和电脑必须连在ESP8266的WiFi
2.4、Step4
AT+CIPSERVER=1,8080 //模块开启服务器模式,端口号8080
远程主机地址AT+CIFSR
指令查看一下。
模块的自身ip地址是192.168.4.1
创建PC以及手机版的客户端
再次提醒一下,务必连接到
ESP8266
产生的WIFI客户端才能成功连接到服务器
客户端连接成功的ID
号貌似在这个版本中不显示,怎么知道它的ID
呢?
可以这样用客户端给服务器发信息,服务器接收到的信息中就包含ID
了
客户端向服务器发字符没有限制呢!
服务器怎么向客户端发送信息呢?(记得这里把“加回车换行”这个选项给去掉)
先发送
AT+CIPSEND=×,× //第一个×是对应的ID号,第二个×是对应的字符个数
注意对应的字符个数问题,如果个数少了就不发,个数多了就只发前对应的个数。总结为:少不多退
手机端也连进去
注意:连之前先连入8266的WIFI
手机端发送123
电脑端发送456
此时由于操作时间有点长,电脑端断了,又重新连了。手机端的ID变为0,后来连入的电脑端ID为1
二、ESP8266做客户端,PC做服务器
先来道开胃菜,单连接模式,这之前务必先办好两件事情:
务必
1. AP模式下PC连接ESP8266的WiFi
2. 去除防火墙的影响
①、关闭防火墙
最快捷的cmd+R->services.msc->windows firewall ->双击后自动改为禁用
注意,如果出来什么警告的话记得选择允许!!!
②、把网络调试助手加入防火墙的白名单,具体做法看<这里>
步骤:
1,还是设置模块的工作模式为AP模式
AT+CWMODE=2
2,复位一下
AT+RST
3,发送
AT+CIPMUX=0
启动单连接,4,
AT+CIPSTART="TCP","192.168.4.100",8080
TCP说明是tcp连接,如果写UDP就是udp连接
192.168.4.100连接的ip地址,电脑的ip,端口号8080
关于这个IP地址的事情,要特别注意一下。
当你打开网络调试助手的,选择TCP Server后会自动出来IP地址,因每个新建的TCPsever的IP地址不相同,需把刚才的对应的IP更新
单发通信指令
AT+CIPSEND=× //对应的就是个数了
最后再来一下服务器往客户端发!!!
三、正式佳肴,多路连接
步骤
看多路连接(首先提醒一下一个模块可以做到
5路连接
)1,还是设置模块的工作模式为ap模式
AT+CWMODE=2
2,复位一下
AT+RST
3,发送
AT+CIPMUX=1
启动多连接4,
AT+CIPSTART=0,"TCP","192.168.4.2",8080
5,
AT+CIPSEND=0,20
6,随便打些东西
7,发送
是否真的像API文档一样ID只有0~4
?试一下5就知道
不言而喻!
当服务器选择向客户端发的时候,因为是多发要选择相应的IP+port!