WiFiClient::connected() не работает
Я использую ESP32, чтобы открыть точку доступа и прослушивать соединения TCP через объект WiFiServer.
Когда я подключаю клиента к серверу, я хочу знать, когда он отключился.
В настоящее время у меня есть простой код как на стороне клиента, так и на стороне сервера. Я подключаюсь с помощью TcpClient в C#.
Когда я вызываю client.close()
на стороне клиента, цикл client.connected()
на сервере просто продолжается вечно.
Вот код ESP:
void setup()
{
WiFi.mode(WIFI_AP);
WiFi.softAP("test");
WiFi.softAPConfig(IPAddress(192, 168, 4, 1), IPAddress(192, 168, 4, 1), IPAddress(255, 255, 255, 0));
Serial.println(WiFi.localIP());
server.begin();
}
void loop()
{
while (!client)
{
client = server.available();
delay(10);
}
while (client.connected())
{
Serial.println("ok");
delay(1000);
client.read();
}
}
Код C#:
static void Main(string[] args)
{
TcpClient client = new TcpClient("192.168.4.1", 222);
client.Close();
}
@schacker22, 👍1
Обсуждение2 ответа
Это ошибка в предыдущей версии библиотеки, о которой упоминалось в https://github.com/bportaluri/WiFiEsp/issues/14
Вы также можете использовать WiFi.softAPgetStationNum(), чтобы получить количество станций, подключенных к интерфейсу точки доступа.
WiFiEsp — это не та библиотека, которую я использую, не так ли? К сожалению, WiFi.softAPgetStationNum()
мне не помогает, потому что мне нужно знать, когда отключился сокет, а не станция., @schacker22
Используете ли вы библиотеку WiFiEsp — это не вопрос, на который я знаю ответ., @Akhil Baranwal
Я видел функцию client.connected() только в WiFiEsp., @Akhil Baranwal
Это WiFiEspClient::connected()
, а не WiFiClient::connected()
, @schacker22
Мой фактический ответ
Вы можете попытаться запросить client.status()
в качестве обходного пути. Когда никто не подключен, он должен вернуть 0.
Контекст
На чем вы основываетесь? Я попытался воспроизвести вашу проблему, но все работает, как и ожидалось, последовательный порт перестает печатать "ok", когда я отключаюсь.
Кроме того, какие именно библиотеки вы используете? Я включил ESP8266WiFi.h
и WiFiClient.h
.
Я использовал platformio v3.4 на модуле ESP8266-01 и простое приложение Android netcat в качестве клиента.
ESP8266WiFi.h
предназначен для ESP8266, который является неправильной платформой, у меня есть плата для разработки ESP32. Я включил #include <WiFi.h>
., @schacker22
- Чтение данных из Google Таблиц с помощью Nodemcu
- Есть ли библиотека Arduino, которая использует ARP для получения списка подключенных устройств в сети?
- Установка параметров после компиляции
- Сколько мА / ч в ESP8266-01 Работает в LiPo-аккумуляторе, если функция WI-FI постоянно включена
- ESP32 не подключается к Wi-Fi
- ESP8266 не подключается к Wi-Fi
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
Добро пожаловать в Ардуино SE. Я не вижу здесь вопроса. Я вижу описание проблемы, но никаких попыток ее решения или вопроса о том, почему такая попытка исправления не сработала. Я рекомендую вам пройти экскурсию по адресу https://arduino.stackexchange.com/Tour, чтобы получить максимальную отдачу от этого сайта. Возможно, вы сможете конкретизировать его достаточно, чтобы предотвратить закрытие этого. Или, если он будет закрыт, возможно, вы можете опубликовать его с элементами, необходимыми для представления вопроса, который может привлечь полезные ответы., @SDsolar
@SDsolar Я абсолютно знаю, как писать на этом сайте, потому что я тоже на stackoverflow. Кроме того, мой вопрос понятен, когда вы читаете заголовок и вторую строку. Я объясняю здесь свое намерение, и, немного подумав, вы можете догадаться, что мне нужна помощь с этой функцией. Вместо того, чтобы писать бессмысленные комментарии, потратьте время на написание ответов., @schacker22
Я просто не вижу здесь вопроса, вот и все. Это сайт вопросов и ответов. Без одного у вас не может быть другого. Я проголосовал за то, чтобы оставить этот вопрос открытым, когда он появился в обзоре, думая, что вам нужно немного подтолкнуть., @SDsolar