ESP8266_AP模式、TCP连接

这篇具有很好参考价值的文章主要介绍了ESP8266_AP模式、TCP连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、整体流程

  • ESP8266设置成AP模式,笔记本连上此WLAN;
  • 作为TCP服务器端,配置好本地端口8266,等待客户端建立TCP连接(并设置60s keep alive);
  • 侦听到客户端发来的TCP连接建立请求,如果能够成功建立TCP连接,则进入等待数据的阶段;
  • 收到TCP数据,向客户端发送响应;
  • 如果60s之内没有收到TCP数据,则主动断开TCP连接;
  • 后续客户端仍可以重新建立TCP连接;

2、配置TCP通信

  • 配置struct espconn:TCP协议,设置本地端口8266;
  • 建立TCP连接后的回调函数;(发送、接收数据报的回调、TCP正常断开的回调)
  • TCP异常断开后的回调函数;(打印异常断开的原因)
  • espconn_accept 建立TCP连接侦听;
  • 建立连接后60内没有数据,自动断开TCP连接;
//初始化TCP通信,端口8266;
void ICACHE_FLASH_ATTR TCP_port8266_init()
{
	ST_NetCon.type = ESPCONN_TCP;					        //通信协议:TCP

	ST_NetCon.proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));// 申请内存
	ST_NetCon.proto.tcp->local_port  = 8266 ;				    // 设置本地端口

	espconn_regist_connectcb(&ST_NetCon,TCP_connect_callback);	//建立TCP连接后回调
	espconn_regist_reconcb(&ST_NetCon,TCP_reconncect_callback);	//TCP异常断开连接

	espconn_accept(&ST_NetCon);								//初始化TCP通信
	//espconn_regist_time在espconn_accept之后调用
	espconn_regist_time(&ST_NetCon,60,0);					//60s没收到数据,断开连接

}

  •  建立TCP连接后的回调函数
  • 发送、接收数据报的回调函数
  • TCP正常断开的回调函数
//建立了TCP连接,设置发送、接收数据回调、断开连接回调
void ICACHE_FLASH_ATTR TCP_connect_callback(void *arg)
{
	os_printf("TCP connect.\n");
	espconn_regist_sentcb((struct espconn*)(arg),TCP_send_callback);	// 注册网络数据发送成功的回调函数
	espconn_regist_recvcb((struct espconn*)(arg),TCP_recv_callback);	// 注册网络数据接收成功的回调函数
	espconn_regist_disconcb((struct espconn*)(arg),TCP_discon_callback);	//TCP连接正常,断开连接的回调函数
}

//正常断开TCP连接
void ICACHE_FLASH_ATTR TCP_discon_callback()
{
	os_printf("TCP normal disconnect\n");
}

void ICACHE_FLASH_ATTR TCP_send_callback(void *arg)
{
	os_printf("TCP seriver send over\n");
}

//作为服务器收到客户端TCP报文的回调函数
void ICACHE_FLASH_ATTR TCP_recv_callback(void * arg, char * pdata, unsigned short len)
{
	struct espconn * T_arg = arg;		                // 缓存网络连接结构体指针

	os_printf("\nESP8266_Receive_Data = %s\n",pdata);	// 串口打印接收到的数据

	// 向对方发送应答
	espconn_send(T_arg,"ESP8266_TCP_Recv_OK",os_strlen("ESP8266_TCP_Recv_OK"));

}

TCP异常断开的回调函数

//异常断开TCP连接
void ICACHE_FLASH_ATTR TCP_reconncect_callback(void *arg,sint8 er)
{
	switch(er){		//输出下TCP异常断开的原因
		case ESPCONN_TIMEOUT:	os_printf("ESPCONN_TIMEOUT\n");	break;		//超时
		case ESPCONN_ABRT:		os_printf("ESPCONN_ABRT\n");	break;		//TCP连接异常
		case ESPCONN_RST:		os_printf("ESPCONN_RST\n");		break;		//连接复位断开
		case ESPCONN_CLSD:		os_printf("ESPCONN_CLSD\n");	break;		//TCP 连接在断开过程中出错,异常断开
		case ESPCONN_CONN:		os_printf(" ESPCONN_CONN\n");	break;		//TCP未连接成功
		default:				os_printf("else tcp error\n");	break;
	}
}

3、下载、验证

ESP8266_AP模式、TCP连接

 

4、ESP8266作为客户端

ESP8266作为客户端,要给出服务器的IP和端口,并调用espconn_connect 主动与其建立连接;

//初始化TCP通信,端口8266;
void ICACHE_FLASH_ATTR TCP_port8266_init()
{
	ST_NetCon.type = ESPCONN_TCP;						    //通信协议:TCP

	ST_NetCon.proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp));	// 申请内存

	//ST_NetCon.proto.udp->local_port  = espconn_port();	//获取8266可用端口,这是动态的端口
	ST_NetCon.proto.tcp->local_port  = 8266 ;				// 设置本地端口
	ST_NetCon.proto.tcp->remote_ip[0] = 192;
	ST_NetCon.proto.tcp->remote_ip[1] = 168;
	ST_NetCon.proto.tcp->remote_ip[2] = 4;
	ST_NetCon.proto.tcp->remote_ip[3] = 2;
	ST_NetCon.proto.tcp->remote_port = 6666;

	espconn_regist_connectcb(&ST_NetCon,TCP_connect_callback);	//建立TCP连接后回调
	espconn_regist_reconcb(&ST_NetCon,TCP_reconncect_callback);	//TCP异常断开连接

	//ESP8266作为客户端,是向服务器申请TCP连接
	espconn_connect(&ST_NetCon);
}

ESP8266_AP模式、TCP连接文章来源地址https://www.toymoban.com/news/detail-466530.html

到了这里,关于ESP8266_AP模式、TCP连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • esp8266WIFI模块教程:ATK-ESP8266——TCP网络通讯和服务器连接

      ATK-MW8266D 模块是正点原子推出的一款高性能 UART-WIFI(串口-无线)模块,ATK-MW8266D 模块板载了正点原子公司自主研发的 ATK-ESP-01 模块,该模块通过 FCC、CE 认证,可直接用于出口欧美地区的产品。   ATK-MW8266D 模块采用串口(LVTTL)与 MCU(或其他串口设备)通讯,且内置

    2024年04月15日
    浏览(47)
  • ESP8266动态网页设置网络连接

    1、样例1 样例2 样例2

    2024年02月11日
    浏览(35)
  • 关于ESP8266的透传模式测试(一)——TCP Client透传模式

    一、前言 本次测试所使用的是正点原子的ATK-ESP8266 WIFI模块。直接使用官方提供的固件使用AT指令来配置模块并使用。 模块默认为AT指令状态,模拟波特率为115200(8bit数据位,1bit停止位)。 硬件连接 使用USB转TTL方式(电脑需要安装CH340驱动)连接ESP8266,接线图如下。 二、透

    2024年02月22日
    浏览(62)
  • ESP8266模块,STA模式(与手机搭建TCP通讯,EPS8266为客户端)

    专题文章: ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为客户端) ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端) ESP8266模块,SoftAP模式(与电脑搭建TCP通讯,ESP8266为客户端) ESP8266模块,SoftAP模式(与电脑搭建TCP通讯,ESP8266为服务端) ESP8266模块,STA模式(

    2024年04月28日
    浏览(44)
  • (小白专用)ESP8266(esp01s+固件下载器)与手机通信及指令连接设置

    本人历经九九八十一难,终于将ESP8266与手机通信调试完成。由于在过程中经历了太多不方便,特此写篇博文帮助0基础的小白们完成调试,看我这一篇就够了,特别详细。 1.材料准备    esp01s一个,固件下载器一个(USB转TTL也可替代),PC端软件“安信可串口调试助手”,安卓

    2024年02月09日
    浏览(69)
  • Arduino uno 通过esp8266WIFI模块连接onenet平台(TCP协议)(1接线、代码篇)

    1.可以用esp8266开发板,也可以用esp01s,有引脚说明(左)或esp01(右)  ESP8266Node-MCU(ESP-12E) esp01s接线如下:  esp01接线: 2.代码1:设置连接方式,WiFi账号密码,tcp协议等 打开串口监视器(右上角放大镜图标) 等待显示“ok ready” 输入AT 返回ok 输入AT+RST 返回 ok 一长段乱码

    2024年02月04日
    浏览(56)
  • STM32+ESP8266(AT固件)连接阿里云物联网 保姆级教学(附代码)--2. 设置产品Topic数据和功能定义设备物模型数据显示

    提示:这里是从实际应用如何使用教学配置,未从原理讲解,适合小白从零开始到成功,比较有成就感 STM32+ESP8266(AT固件)连接阿里云物联网系列保姆级教学 1. 创建产品和设备 2. 设置产品Topic数据和功能定义设备物模型数据显示 3. 硬件连接+代码修改 4. Web数据可视化 5.功能

    2024年02月03日
    浏览(64)
  • ESP8266,手机与电脑之间的TCP通讯

     电脑端运行通讯猫调试助手,作为服务端: 电脑端 电脑的IP地址是: 192.168.2.232 手机与电脑之间的TCP通讯 手机端运行网络调试精灵,作为客户端: 手机端 如果从手机端点击\\\"发送\\\"按钮,则也会将\\\"ghhh东方红广场\\\"几个字发送到电脑上(服务端). ESP8266作为客户端: // 注意如果是本地设备

    2024年02月08日
    浏览(35)
  • 基于 Arduino 库实现 ESP32 使能 WiFi AP + TCP Server 的应用

    ESP32 开启 WiFi AP 模式创建 WiFi 热点 定义 IP 地址 创建 TCP Server 使用手机连接 ESP32 创建的 AP 热点 查看 UART0 日志打印,获取 TCP Server 的 IP 地址 使用手机端 TCP 调试 APP( 网络助手 ) 与 ESP32 创建的 TCP Server 建立连接

    2024年02月12日
    浏览(43)
  • esp8266 TCP接入巴法云物联网云平台

    前言 巴法云物联网云平台,就如它的文档介绍的,是一个专注物体联网的神奇的设备云平台(cloud.bemfa.com),它有以下特征,轻量级,支持发布/订阅模式,提供遗嘱机制,支持TCP长连接,全平台兼容。本文,将介绍如何通过esp8266这个芯片连接到巴法云的TCP设备云。 (一)注册

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包