esp8266创建tcp服务器但无法接收数据

时间:2016-08-04 21:29:24

标签: esp8266 arduino-ide

我正在使用arduino ide来编程esp8266(wifi模块)并且我在模块上创建了一个tcp服务器然后我使用tcp客户端测试程序来发送和接收数据。这是我正在使用的代码 我设法从模块发送数据但无法从手机接收任何数据,任何人都可以帮助我吗? 这是我正在使用的代码

#include <ESP8266WiFi.h>
int i =0;
char ssid[] = "moataz";         
char pass[] = "58295829";  
int status = WL_IDLE_STATUS;

WiFiServer server(1050);

void setup() 
{
  Serial.begin(115200);
  WiFi.mode(WIFI_AP_STA);
  WiFi.begin("moataz", "58295829");
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(500);
    Serial.print(".");
  } 
  Serial.println("connectedd");
  server.begin();
  IPAddress myAddress = WiFi.localIP();
  Serial.println(myAddress);
  delay(200);
}

bool alreadyConnected = 0;
void loop() {
  WiFiClient client = server.available();
  if (client) {
    if (!alreadyConnected) {
      client.flush();
      Serial.println("We have a new client");
      client.println("Hello, client!");
      alreadyConnected = true;
    }
  }
  if (client.available() > 0) {
    char thisChar = client.read();
    Serial.println("We got data");
    Serial.println(thisChar);
    delay(200);
  }
}

1 个答案:

答案 0 :(得分:1)

删除WifiClient后,关闭连接,然后您的标记alreadyConnected不表示连接状态。
您的代码应该是第一次运行 为了接受TCP连接,发送“Hello,client!”,读取1个字符,关闭TCP连接,你可以这样继续:

void loop() {
    WiFiClient client = server.available();
    if (client) {
        Serial.println("We have a new client");
        client.println("Hello, client!");

        if (client.available() > 0) {
            char thisChar = client.read();
            Serial.println("We got data");
            Serial.println(thisChar);
            delay(200);
        }
    }
}

如果您想保持连接打开,则需要将其保持在循环之外。 此示例WiFiTelnetToSerial.ino显示了如何维护WIFIClient的列表。