2015-10-16 81 views
2

我想在Arduino IDE中通過ESP8266創建一個簡單的Wifi TCP服務器。但是我遇到了一個很大的問題:當我從客戶端發送字符或字符串時,我無法在服務器上收到它。如何通過ESP8266創建TCP服務器?

事實上,我連接esp8266到我的電腦,我想看到從pc終端客戶端發送字符。 我的發送端是套接字協議的應用程式Android完整的代碼我在服務器端寫的是:

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兩側。

+0

請提供更多代碼,雙方都會提供幫助。 – Marged

+0

@已收集:我也假設,但「沒有收到」並不意味着「但程序在發送方執行成功」。 –

+0

我發送方是SocketProtocol應用程序,當我點擊發送按鈕時,狀態改變爲發送消息!我認爲不能發送消息! – Sadeq

回答

3

在循環中,您在建立客戶端連接時立即關閉客戶端連接,刪除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()); 
     } 
    } 
} 

當客戶端未連接它會嘗試連接一個當客戶端連接時,它讀取輸入數據。