自建服务器控制esp8266,基于esp8266的智能家居控制系统-局域网篇2,tcpserver

该代码展示了如何使用Arduino的ESP8266模块建立一个Wi-Fi服务器,处理多个TCP客户端连接。程序初始化Wi-Fi连接,设置服务器端口,并管理客户端连接,确保当设备断开时释放资源。它还实现了数据的串行通信和广播到所有已连接的客户端。
摘要由CSDN通过智能技术生成

#include

#define MAX_SRV_CLIENTS 3   //最大同时联接数,即你想要接入的设备数量,8266tcpserver只能接入五个,哎

const char *ssid = "bao"; 这里是我的wifi,你使用时修改为你要连接的wifi ssid

const char *password = "123456780w"; //你要连接的wifi密码

WiFiServer server(8266);//你要的端口号,随意修改,范围0-65535

WiFiClient serverClients[MAX_SRV_CLIENTS];

void setup()

{

Serial.begin(115200);

delay(10);

pinMode(16, OUTPUT);

digitalWrite(16, 0);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED)

{

delay(500);

}

server.begin();

server.setNoDelay(true);  //加上后才正常些

}

void loop()

{

blink();

uint8_t i;

if (server.hasClient())

{

for (i = 0; i < MAX_SRV_CLIENTS; i++)

{

if (!serverClients[i ] || !serverClients[i ].connected())

{

if (serverClients[i ]) serverClients[i ].stop();//未联接,就释放

serverClients[i ] = server.available();//分配新的

continue;

}

}

WiFiClient serverClient = server.available();

serverClient.stop();

}

for (i = 0; i < MAX_SRV_CLIENTS; i++)

{

if (serverClients[i ] && serverClients[i ].connected())

{

digitalWrite(16, 0);//有链接存在,就一直长亮

if (serverClients[i ].available())

{

while (serverClients[i ].available())

Serial.write(serverClients[i ].read());

}

}

}

if (Serial.available())

{

size_t len = Serial.available();

uint8_t sbuf[len];

Serial.readBytes(sbuf, len);

//push UART data to all connected telnet clients

for (i = 0; i < MAX_SRV_CLIENTS; i++)

{

if (serverClients[i ] && serverClients[i ].connected())

{

serverClients[i ].write(sbuf, len);  //向所有客户端发送数据

delay(1);

}

}

}

}

void blink()

{

static long previousMillis = 0;

static int currstate = 0;

if (millis() - previousMillis > 200)  //200ms

{

previousMillis = millis();

currstate = 1 - currstate;

digitalWrite(16, currstate);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值