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