5

我想在 Arduino IDE 中通过 ESP8266 创建一个简单的 Wifi TCP 服务器。但是我有一个大问题:当我从客户端发送一个字符或字符串时,我无法在服务器上接收它。

事实上,我将 esp8266 连接到我的 PC,我想在 PC 终端中看到客户端发送的字符。我的发送端是用于 android 的 Socket 协议应用程序!我在服务器端编写的完整代码是:

WiFiServer server(8888);
void setup() 
{
  initHardware();
  setupWiFi();
  server.begin();
}
void loop() 
{
  WiFiClient client = server.available();
  if (client) {
    if (client.available() > 0) {
      char c = client.read();
      Serial.write(c);
    }
  }
}
void setupWiFi()
{
  WiFi.mode(WIFI_AP);
  WiFi.softAP("RControl", WiFiAPPSK);
}

void initHardware()
{
  Serial.begin(115200);
}

两边的波特率都设置为115200。

4

1 回答 1

4

在循环中,您将在建立删除WiFiClient对象后立即关闭客户端连接。

为了保持连接打开,您可以像这样修改循环:

WiFiClient client;
void loop() 
{
    if (!client.connected()) {
        // try to connect to a new client
        client = server.available();
    } else {
        // read data from the connected client
        if (client.available() > 0) {
            Serial.write(client.read());
        }
    }
}

当客户端未连接时,它会尝试连接一个,当客户端连接时,它会读取传入的数据。

于 2015-10-19T17:17:31.020 回答