Изменить один конкретный байт IP-адреса
Итак, если у меня есть IP-адрес IP-адрес: 192.64.5.1
, можно ли каким-то образом изменить определенный байт этого IP-адреса на IP-адрес: 192.64.**6* *.1
Моя идея — изменить IP-адрес на переменные IP-адрес: abcd
Теперь я мог бы сказать a= 192; б= 64; с= 5 + 1; d= 1
Но что, если я получу IP-адрес: 192.64.5.1
в виде строки. Можно ли каким-то образом разделить его на 4 части, каждую из которых я могу индивидуально присвоить целому числу (a, b, c или d)?
2 ответа
Лучший ответ:
Все это можно сделать с помощью класса IPAddress
.
Например: создайте IP-адрес из строки:
IPAddress myAddr(myString);
Создайте новый IP-адрес с изменением одного байта:
IPAddress myNewAddr(myAddr[0], myAddr[1], myAddr[2] + 1, myAddr[3]);
Да, вы можете разделить строку с помощью функции библиотеки C strtok
, а затем объединить все вместе с собственной строкой с помощью библиотеки C strcat
.
Вы можете преобразовать строки в atoi
, поэтому используйте полученную строку из strtok с atoi в целое число.
Совет: попробуйте это на ПК с локальным компилятором C, потому что вы можете проверить это очень быстро (если только вы не сможете правильно реализовать это с первого раза). Затем вы копируете его в свой скетч Arduino. Обязательно начните с буфера символов, достаточно большого для максимально возможной строки IP-адреса.
- Как читать и записывать 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?
и
myAddr[2] = 6
.myAddr[2]+=1
илиmyAddr[2]++
тоже работает, @Juraj