ESP8266从入门到入门系列(四) TCPServer+小车应用案例

本文介绍了TCP协议的基础知识,包括其历史、分层模型和主要特点。接着,详细阐述了TCPServer和TCPClient的概念,展示了它们在通信过程中的挥手握手图示。在ESP8266上,通过WIFIServer库建立了TCP Server,并给出了连接WiFi和处理TCP连接的代码示例。最后,提到了一个实际应用案例——使用C#和ESP8266通过TCP通信控制STC8A驱动的小车。

0. 前言

转载自我的古月居频道
上期介绍了Arduino的基本知识,今天直接上实例来给大家讲解TCPServer和TCPClient。看看他们到底是何方圣神。

1.TCP协议

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它在原有IP协议的基础上,增加了确认重发滑动窗口和复用/解复用等机制。

1.1TCP/IP的背景历史

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3ReFwRV-1617333105849)(1.png)]

1.2 TCP/IP协议分层模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TO63u5B-1617333105851)(2.png)]

上图列出了TCP/IP与OSI分层之间的大概关系,可以看出,TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。

现在再来看看主机A向主机B发送一封电子邮件,在TCP/IP模型下的处理过程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zZNAHTXY-1617333105854)(3.png)]

分组数据包经过以太网的数据链路时的大致流程如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iitj3ImQ-1617333105856)(4.png)]

1.3 主要特点

TCP有如下特点:

  1. TCP提供客户和服务器的连接。
  2. TCP提供可靠性。(数据的可靠投递或故障的可靠通知)并不能保证数据一定会被对方端点接收。
    3.TCP通过给所发数据的每一个字节关联一个序列号进行排序。
  3. TCP提供流量控制。TCP总是能告诉对象端它能够接收多少字节的数据,这成为通告窗口。该窗口在任何时刻都指出接收缓冲区中的可用空间,从而确保发送端发送的数据不会溢出接收缓冲区。
  4. TCP连接是全双工的。

2.如何理解TCPServer和TCPClient

其实从他的名称中就很容易了解他的意思:

  • TCPServer = TCP(传输控制协议)+Server(服务端)
  • TCPServer = TCP(传输控制协议)+Client(客户端)

2.1 Server&Client之间挥手握手图示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ad127wZV-1617333105857)(5.png)]

如上图所示,可以看出Client和Server之间的通信过程为:
新建连接三次握手->数据传输->断连接四次挥手

3.ESP8266中做TCPServer

我们先理清一下思路:

  1. 首先初始化WIFI(STA或者AP模式都可以)在这里我们使用STA模式。
  2. 然后建立TCPServer

3.1 使用STA模式连接WIFI

在第一节的时候就介绍过WIFI的三种模式,今天就上代码使用STA模式连接WIFI。

  • 创建一个wifi账号、密码的常量,方便个人操作
const char * ssid = "DIRECT-37-HP Laser 136w";         //wifi账号
const char * pwd = "SoF1PMiKZ7";                       //wifi密码
String Local_IP = "";                                  //获取当前匹配的IP地址
  • 创建一个获取WiFi的函数
void setup() {
   
   
  Serial.begin(115200);                   //在115200波特率开启串口
  pinMode(4, OUTPUT);                     //在开机时让灯输出也能让自己清楚的看到ESP8266是否在正常运行
  digitalWrite(4, LOW);
  delay(1000);
 
玩转ESP8266 SDK编程实例】, 第1集(公开):套件介绍 观看地址:http://v.youku.com/v_show/id_XMTUzNzM3ODg3Mg==.html 操作演示:http://pan.baidu.com/s/1dEGjwVv(视频演示全家福) 第2集(加密):组装WIFI模块,在面包板上搭建实验电路,下载厂家固件并调试 观看地址:http://v.youku.com/v_show/id_XMTUzNzM3NzY1Mg==.html (密码:021295) 操作演示:http://v.youku.com/v_show/id_XMTUzNjkzMDc5Mg==.html 第3集(加密):搭建开发环境,编写第一个程序:串口打印字符 观看地址:http://v.youku.com/v_show/id_XMTUzNzM3NzQ2NA==.html (密码:036370) 第4集(加密):LED闪烁(控制WIFI模块的GPIO口) 观看地址:http://v.youku.com/v_show/id_XMTUzODQ4Mzc4NA==.html (密码:048426) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg2NjQzNg==.html 第5集(加密):按键控制LED(读取GPIO口的状态) 观看地址:http://v.youku.com/v_show/id_XMTUzODQ4Mzc1Mg==.html (密码:054524) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDU0MA==.html 第6集(加密):WIFI连接(把WIFI模块作为服务器,设置为AP模式) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMjUxNg==.html (密码:064663) 第7集(加密):UDP通信(把WIFI模块作为服务器,UDP_Service) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMjE2NA==.html (密码:071725) 第8集(加密):TCP通信(把WIFI模块作为服务器,TCP_Service,并用电脑控制LED) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMTQwNA==.html (密码:082890) 第9集(加密):WIFI连接(把WIFI模块作为客户端,设置为STATION模式) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMTM2OA==.html (密码:097974) 第10集(加密):UDP通信(把WIFI模块作为客户端,UDP_Client) 观看地址:http://v.youku.com/v_show/id_XMTU0NjIyMTM2NA==.html (密码:103054) 第11集(加密):TCP通信(把WIFI模块作为客户端,TCP_Client,并用手机控制LED) 观看地址:http://v.youku.com/v_show/id_XMTU0NjM3MDUwOA==.html (密码:112997) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDQ4OA==.html 第12集(加密):渐变灯(PWM) 观看地址:http://v.youku.com/v_show/id_XMTU1MTg5Mjg2NA==.html (密码:122826) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDQ2NA==.html 第13集(加密):七彩灯(PWM控制,并用手机控制LED) 观看地址:http://v.youku.com/v_show/id_XMTU1MTg5MjgwNA==.html (密码:133741) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDEwOA==.html 第14集(加密):光控灯(ADC) 观看地址:http://v.youku.com/v_show/id_XMTU1NDE0NTg5Mg==.html (密码:145693) 操作演示:http://v.youku.com/v_show/id_XMTUzNjg1MDAyMA==.html 第15集(加密):串口通讯(UART中断) 观看地址:http://v.youku.com/v_show/id_XMTU1NDE0NTg4MA==.html (密码:156528
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锡城筱凯

你的鼓励是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值