TCP传输 分服务端和客户端,需要提前建立连接,后续才能传输。
UDP不区分服务端和客户端,不需要提前建立连接。
1.ESP8266作为TCP客户端:ESP8266去连接TCP服务器适用于数据的上报的场景,这种情况下,ESP8266连接服务端(手机),要知道服务器那端的IP地址, 我们新增一个手机去控制设备,就要重新告诉ESP8266我们手机的IP。 模式图如下。
该模式适用于数据的上报的场景,不适合我们这个项目的模式。
2. ESP8266作为TCP服务端:其它设备(手机、电脑)来连接TCP服务器(ESP8266),适用于多设备控制同一个设备,适合我们项目的模式。这种情况下,其它设备要知道服务器的IP地址就能连接传输数据,也就是知道ESP8266的IP地址即可。模式拓扑结构:
3. UDP模式: UDP传输,知道对方IP地址,就可以直接发数据。 这里UDP传输又分固定远端和远端可变,两种模式。如果使用固定远端,就需要知道双方的IP地址, 在我们这个智能家居项目场景里面,是不合适的, 我们不方便获取新手机的IP地址。如果使用可变远端,手机发送数据给ESP8266后,ESP8266下次自动和最近一次通信的设备发送数据,也就是刚才的手机。 这样我们就无需告诉ESP8266我们手机的IP地址, 但还会存在一个问题。刚开始的时候,ESP8266无法给手机发数据,因为不知道手机的IP地址,只能手机先发送数据给ESP8266后,才能再发数据给手机。
4. 透传:就是在作为TCP客户端传输或UDP传输的情况下, 进入这个透传模式,就收发的都是原始数据 不会加数据封装,接收数据就不是IPD开头那种。
先创建TCP/UDP连接,再进入透传模式 之后手机用TCP/UDP发数据,发什么,模块转发给我们MCU就是什么。
我们发送任何东西,比如AT+RST给ESP8266,它也转发给手机。。。 除非发送+++退出。
后续项目将会选择ESP8266作为TCP服务端和远端可变的UDP模式两种模式来实现,选择第1种时候,微信小程序连接IP和端口时候,会发送一串数据,依次可以判断是否连接。选择第2种时候,要通过微信小程序,先发送开灯或者关灯指令,让ESP8266先获取手机的IP信息,才能够在开发板上用按键控制门铃信息的发送。