• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Подключение нескольких клиентов к TCP серверу на ESP

Dev

New member
Здравствуйте. Столкнулся с такой проблемой: не удаётся считать сообщения при подключении второго клиента к серверу( именно к серверу, а не к точке доступа), при этом сообщения от первого клиента также перестают проходить в момент подключения второго и модуль становится кирпичом до следующей перезагрузки.
Код сервера:
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");
   }
}
Судя по коду из WiFiServer.cpp, сокет создаётся только при создании сервера:
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;
    }
}
Если кто-нибудь знает как это решить, пожалуйста помогите, буду очень признателен ^_^.
 

Dev

New member
Всё работает, с 3 клиентами точно
http://esp8266.ru/forum/threads/prostaja-peredacha-dannyx.1037/
тут есть примерчик с клиентом и сервером, где сервер это точка доступа
Примеры помечены как "Скетчи работают, дальше , думаю, разберётесь)"
А ещё прочитайте срочное добавление, что располагается ниже и будет счастье )) Небольшое но счастье)
вот)
 
Сверху Снизу