已解决:
勾选 保持TCP长连接 选项即可
在学习TCP client相关时,遇到的上述问题
贴上代码
#include <WiFi.h>
const char *ssid = "wifi;
const char *password = "密码";
const IPAddress serverIP(192,168,1,5); //目标地址
uint16_t serverPort = 8106; //目标服务器端口号
WiFiClient client; //声明一个客户端对象,用于与服务器进行连接
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(2500);
Serial.print(".");
}
Serial.println("已连接");
Serial.print("本机ip地址:");
Serial.println(WiFi.localIP());
Serial.println("尝试访问服务器");
if (client.connect(serverIP, serverPort)) //尝试访问目标地址
{
Serial.println("访问成功");
client.print("Hello world!"); //向服务器发送数据
while (client.connected()) //如果已连接或有收到的未读取的数据
{
Serial.println("已连接");
if(client.available())
{
Serial.println("查询信息:");
if (client.available()) //如果有数据可读取
{
String line = client.readStringUntil('\n'); //读取数据到换行符
Serial.print("收到消息:");
Serial.println(line);
client.write(line.c_str()); //将收到的数据回发
//c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同
}
}
}
Serial.println("关闭当前连接");
client.stop(); //关闭客户端
}
else
{
Serial.println("访问失败");
client.stop(); //关闭客户端
}
}
void loop()
{
}
运行结果:
Serial.println("已连接");
这句代码,是我用来调试查看程序运行情况的
可以看到,本应该一直挂机等待消息的程序在循环18次之后,自动跳出while()循环了
该问题留待解决…