Разрешить имена - дело непростое.Это выглядит легко с самого начала, но на самом деле оно изобилует некоторыми вещами, которые делают его «не таким простым».Таким образом, лучшее, что можно сделать на самом деле, - это использовать существующую реализацию, а не накатывать собственную, потому что есть из чего выбирать, и большинство из них довольно хороши.Если у вашего локального сервера имен (маршрутизатора) есть определитель, просто используйте его, потому что он позаботится о сложности (но у него будет сам кэш).
Если вы намереваетесь разрешить себя самостоятельно,вам нужно будет сделать намного больше, чем запустить запрос на корневом сервере имен.Вам нужно будет отправить запрос одному случайному лицу, разобраться с тем, что произойдет, если вы не получите ответ (попробуйте другой), а затем, когда вы получите ответ обратно, это не будет ответ, который вы ищете,Если вы отправите запрос на «www.example.com», он просто перечислит все серверы имен для «com» (в записях NS) и скажет, что вы должны спросить их дальше.Затем вам нужно пойти спросить ком, который скажет вам спросить серверы имен для example.com и попросить вас спросить их.Между тем записи NS для example.com могут фактически указывать вам на серверы имен где-то еще, например, на «dns1.example.net», что означает, что вам нужно будет снова начать с корня, чтобы увидеть, как добраться до примера.Серверы имен net.
В любом случае, вышесказанное является упрощением, хотите верьте, хотите нет.Итак, да: вам следует спросить локальный маршрутизатор или распознаватели вашего интернет-провайдера, а не делать это самостоятельно.Если вы хотите сделать это локально для своего приложения, выберите одну из основных реализаций C, чтобы сделать это для вас, а не переписывать.Если вы не хотите многому научиться (что всегда хорошо).