Webduino отправка get-запроса из цикла loop

korobtsov
Offline
Зарегистрирован: 06.03.2018

Добрый день, уважаемое сообщество!

Несколько дней не могу найти решение проблемы.

Нужно из цикла loop отправить get-запрос вида: hostname.ru/send/scan?1234567890123

Проблема в том, что если запущен слушатель webserver->processConnection(buff, &len);

то подключение к серверу hostname.ru происходит, но стоит закомментировать слушателя webduino и все работает как нужно.

...    
    webserver->processConnection(buff, &len);
 
    EthernetClient client;
    IPAddress server(192,168,1,1);
    
    if (client.connect(server, 80)) {      // Вот в этом месте крашится
      client.println("GET /send/scan?1234567890123 HTTP/1.1");
     
      client.println("HOST: hostname.ru");
      client.println();
    } 
  ...
Подскажите, пожлуйста, куда копать.
 
 
korobtsov
Offline
Зарегистрирован: 06.03.2018

Не получается редактировать свое первое сообщение.

"..то подключение к серверу hostname.ru происходит"

следует читать:

"..то подключение к серверу hostname.ru не происходит"

sadman41
Offline
Зарегистрирован: 19.10.2016

Крашится - это у ардуины светодиод выпадает что ли?

connect() возвращает 1 или 0. 0 - если все сокеты заняты. Например - кто-то их перевёл в состояние LISTEN.

korobtsov
Offline
Зарегистрирован: 06.03.2018

Спасибо, sadman41, завтра посмотрю.

p.s. крашится - совсем работать EthrnetClient перестает :)

sadman41
Offline
Зарегистрирован: 19.10.2016

Это вполне вероятно. Библиотека Ethernet.h написана вроде как профессионалами, но внутреннее устройство уже неделю поражает мое воображение. Поэтому я не удивлюсь, если в ней где-нибудь происходит конфликт при перемене режима работы сокетов.

korobtsov
Offline
Зарегистрирован: 06.03.2018

Действительно, не освобождались сокеты, хотя в либе flush и stop присутствовали.

Сделал костыль, под Webduino выделил 3 сокета, под get-запрос 1 сокет.

Пока работает.

Еще раз огромное спасибо, sadman41, за помошь!