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(\"[无客户端连接]\");}}
结果: