ESP8266 TCP/IP-связь
Итак, я изучаю возможность TCP-связи между 1 чипом ESP8266 (станцией) и 2 ESP8266 (клиентами), подключенными к этой станции. Каждый раз, когда я нахожу код, включающий TCP, он включает только такие вещи, как client.print(). Но как мне написать сообщение на определенный IP-адрес в этой сети?
Когда я выполняю client.print(), он отправляет сообщение ВСЕМ клиентам. Но я хочу иметь возможность делать что-то вроде client1.print() и client2.print()
1 ответ
Объект WiFiClient оборачивает TCP-сокет. Обычный TCP-сокет подключен к IP-адресу и порту. WiFiServer запускает прослушивающий сокет на порту. Если к серверу в прослушиваемом сокете обращается сокет удаленного клиента, он создает локальный сокет, соединенный с сокетом удаленного клиента на свободном порту, и возвращает объект WiFiClient, обертывающий сокет. Все, что вы пишете или печатаете на WiFiClient, отправляется в этот удаленный сокет.
Если одна из ваших клиентских плат создает WiFiClient и подключает его к IP-адресу и порту WiFiServer на вашей «серверной» плате, то вы получаете WiFiClient из server.available(), и эти два объекта WiFiClient соединяются. То, что вы пишете/печатаете на одной стороне, вы читаете только из объекта WiFiClient на другой стороне.
клиентский сокет
if (client.connect(serverIP, PORT)) {
client.print("request\n");
String response = client.readStringUntil('\n');
Serial.println(response);
client.stop();
}
серверная часть
WiFiClient client = server.available();
if (client && client.connected()) {
String request = client.readStringUntil('\n');
Serial.println(request);
client.print("response\n");
client.stop();
}
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?