Александр Терентьев (aterentiev) wrote,
Александр Терентьев
aterentiev

Categories:

DNS-клиент у Ардуино

Запарился я с этим W5100. Такое ощущение, что никто на нем больше трех строчек ничего не делал...

Ваяю умный контроллер. Пока что делает 3 вещи - часы на DS3231, вебсервер и NTP-клиент с DNS-ресолвером, т.к. NTP-сервер беру из пула pool.ntp.org

Каждая часть сама по себе работает без проблем. Вебсервер отдает данные, часы тикают, NTP получает время и пишет его в RTC. Проблема выплыла во время отладки. После старта железка однократно забирает время с сервера и делает это раз в минуту (временно, потом будет раз в сутки). Если больше ничего не делать - все ОК, раз в минуту ресолвится новый IP, забирается время, устанавливаются часы. Если же между NTP-запросами зайти пару раз с браузера на вебсервер - начинается странное. Перестает работать DNS и NTP сервер больше не ресолвится. При этом, если взять старый IP - время запрашивается, NTP server отвечает.

При этом DNS отваливается с ошибкой "TIMEOUT". Пытается 3 раза по 5 секунд - и вываливается. И с этого момента почти всегда (именно "почти", потому что в 1-2% случаев срабатывает "самоизлечение" и вдруг работает снова) DNS не работает. И пересоздание обьекта (delete DNS; DNS = new DNSClient;) не помогает.

Такое ощущение, что что-то с сокетами, их в чипе всего 4. Но где?.. Дебаг говорит, что при DNS-запросе минимум один сокет свободен. Почему-то вебсервер сьедает иногда два. Но не всегда. Обычно один в listening на 80 порту, второй - пользуется для UDP запросов на NTP Server, третий - 53й порт для DNS-ресолвинга и четвертый свободен.

Странно все это.
Tags: arduino, Программизмы, Размышления
Subscribe

  • Про ручные циркулярки

    Кроил вчера лист OSB ручной циркуляркой и в очередной раз задумался о левых-правых пилах. Загадочным образом в этих ваших Европах считают правое…

  • 802.1q trunk через WiFi

    Гуглил, гуглил, недогуглил. Есть свичи с кучей разных VLAN-ов, соединенные на данный момент гигабит-транками. Пришла разнарядка поместить все на…

  • А расскажите про Docker

    Задача такая. Хочу дома небольшой сервер. Как файлофотопомойка, как MQTT сервер, как сервер полоумного дома, для телеграм-бота, да мало ли что еще…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 15 comments

  • Про ручные циркулярки

    Кроил вчера лист OSB ручной циркуляркой и в очередной раз задумался о левых-правых пилах. Загадочным образом в этих ваших Европах считают правое…

  • 802.1q trunk через WiFi

    Гуглил, гуглил, недогуглил. Есть свичи с кучей разных VLAN-ов, соединенные на данный момент гигабит-транками. Пришла разнарядка поместить все на…

  • А расскажите про Docker

    Задача такая. Хочу дома небольшой сервер. Как файлофотопомойка, как MQTT сервер, как сервер полоумного дома, для телеграм-бота, да мало ли что еще…