AI智能
改变未来

使用Arduino开发ESP32(十二):TCP Server

TCP Server按如下方式使用:

1.引用相关库#include <WiFi.h>;
2.声明WiFiServer对象;
3.使用begin方法启动监听;
4.监听客户端连接并处理数据通讯;

相关方法:

WiFiServer(uint16_t port=80, uint8_t max_clients=4)

声明WiFiServer对象(端口号,最大接入客户数量)

WiFiClient available()WiFiClient accept(){return available();}

尝试建立客户对象

void begin(uint16_t port=0)

服务器启动

void setNoDelay(bool nodelay)

设置是否延时发送:
使用begin方法时会被设置为false,这样服务器会合并小数据包后发送,产生延时;
开启NoDelay可以提高应答速度,但有些情况下会降低总传输效率,需要根据需求设置;

bool getNoDelay()

返回:是否设置了延时发送

bool hasClient()

返回:是否有客户端尝试接入;

size_t write(const uint8_t *data, size_t len)size_t write(uint8_t data){return write(&data, 1);}

发送数据,发送成功返回发送字节数,失败返回0;
除了用write()方法外也可以用print()等方法发送数据;

void end()void close()void stop()

停止服务;

int setTimeout(uint32_t seconds)

设置超时时间;

代码:

#include <WiFi.h>const char *ssid = \"CMCC-678\";const char *password = \"18357220989\";WiFiServer server; //声明服务器对象void setup(){Serial.begin(115200);   //串口初始化Serial.println();WiFi.mode(WIFI_STA);WiFi.setSleep(false); //关闭STA模式下wifi休眠,提高响应速度WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED){delay(500);Serial.print(\".\");}Serial.println(\"Connected\");Serial.print(\"IP Address:\");Serial.println(WiFi.localIP());server.begin(2333); //服务器启动,端口号2333}void loop(){WiFiClient client = server.available(); //尝试建立客户对象if (client) //如果当前客户可用{Serial.println(\"[存在客户端连接]\");String readBuff;    //读取信息暂存while (client.connected()) //如果客户端处于连接状态{if (client.available()) //如果有可读数据{char c = client.read(); //读取一个字节//也可以用readLine()等其他方法readBuff += c;if(c == \'\\r\') //接收到回车符{client.print(\"已收到: \" + readBuff); //向客户端发送Serial.println(\"已收到: \" + readBuff); //从串口打印readBuff = \"\";break; //跳出循环}}}client.stop(); //结束当前连接:Serial.println(\"[无客户端连接]\");}}

结果:

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 使用Arduino开发ESP32(十二):TCP Server