Standardoil:
Qui mi sono perso
Era solo un mio vaneggio, nel codice, semplificato:
WiFiEspServer ArduinoServer(80);
WiFiEspClient webClient;
void setup() {
[b]WiFi.init(&Serial1);[/b]
}
void loop() {
WiFiEspClient serverConnection = [b]ArduinoServer.available()[/b];
if (serverConnection) {
Serial.println("New client");
while ([b]webClient.available()[/b]) {
char c = webClient.read();
Serial.write(c);
}
}
quindi evidentemente gestisce lui server/client e sa che arrivano dal canale wifi (cioè Serial1)
se avessi un qualche modo per dirgli che il server comunica sulla Serial1 e il client sulla Serial2 non avrei il problema che me li confonde.... credo. Boh.
Comunque cercando di capire la libreria WifiEspServer.cpp trovo:
WiFiEspClient WiFiEspServer::available(byte* status)
{
// TODO the original method seems to handle automatic server restart
int bytes = EspDrv::availData(0);
if (bytes>0)
{
LOGINFO1(F("New client"), EspDrv::_connId);
[b]WiFiEspClass::allocateSocket(EspDrv::_connId);[b][/b][/b]
WiFiEspClient client(EspDrv::_connId);
return client;
}
return WiFiEspClient(255);
}
Ma allora attribuisce socket diversi (_connId) ? E quindi perché interpreta la risposta al client come una nuova chiamata?