Dev
New member
Здравствуйте. Столкнулся с такой проблемой: не удаётся считать сообщения при подключении второго клиента к серверу( именно к серверу, а не к точке доступа), при этом сообщения от первого клиента также перестают проходить в момент подключения второго и модуль становится кирпичом до следующей перезагрузки.
Код сервера:
Судя по коду из WiFiServer.cpp, сокет создаётся только при создании сервера:
Если кто-нибудь знает как это решить, пожалуйста помогите, буду очень признателен ^_^.
Код сервера:
PHP:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
WiFiServer server(80);
void startAP()
{
delay(100);
WiFi.mode(WIFI_STA);
WiFi.softAP("ROBOTECH","robotech");
delay(500);
server.begin();
// Serial.println("Server started");
}
void setup() {
Serial.begin(115200);
startAP();
}
void loop()
{
WiFiClient client=server.available();
if(client){//Если клиент подключён
// Serial.println("Client connected");
while(client.connected()){
if(Serial.available()>0){// Если принимаем по UART
char TX = Serial.read(); // Считываем байт( если нужно строку то Serial.ReadStringUntil("\n")
client.print(TX); // Шлём по TCP то что приняли по UART
}
if(client.available()>0){ //Если принимаем по TCP
char RX = client.read(); // Считываем сообщение клиента
Serial.print(RX);// Шлём в UART
//client.print(RX);
}
}
//Serial.println("Diskonnected");
}
}
PHP:
void WiFiServer::begin()
{
uint8_t _sock = WiFiClass::getSocket();
if (_sock != NO_SOCKET_AVAIL)
{
ServerDrv::startServer(_port, _sock);
WiFiClass::_server_port[_sock] = _port;
WiFiClass::_state[_sock] = _sock;
}
}