Функция net.LookupIP

Функция net.LookupIP выполняет DNS-запрос для получения IP-адресов, связанных с указанным доменным именем. В качестве первого параметра она принимает контекст context.Context, который позволяет управлять временем выполнения запроса, и строку с доменным именем. Возвращает функция два значения: слайс IP-адресов типа []net.IP и ошибку типа error, которая будет равна nil при успешном выполнении.

Синтаксис

goips, err := net.LookupIP(context.Background(), "domain.com")

Пример

Давайте выполним поиск IP-адресов для домена "google.com":

gopackage main

import (
  "context"
  "fmt"
  "net"
)

func main() {
  ips, err := net.LookupIP(context.Background(), "google.com")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  for _, ip := range ips {
    fmt.Println(ip)
  }
}

Результат выполнения кода (может отличаться в зависимости от сети):

go"142.250.186.46"
"2a00:1450:4010:a0c::8b"

Пример

Давайте выполним поиск IP-адресов для локального хоста:

gopackage main

import (
  "context"
  "fmt"
  "net"
)

func main() {
  ips, err := net.LookupIP(context.Background(), "localhost")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  for _, ip := range ips {
    fmt.Println(ip)
  }
}

Результат выполнения кода:

go"127.0.0.1"
"::1"

Пример

Давайте выполним поиск IP-адресов с использованием контекста с таймаутом:

gopackage main

import (
  "context"
  "fmt"
  "net"
  "time"
)

func main() {
  ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
  defer cancel()

  ips, err := net.LookupIP(ctx, "example.com")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  for _, ip := range ips {
    fmt.Println(ip)
  }
}

Результат выполнения кода:

go"93.184.216.34"
"2606:2800:220:1:248:1893:25c8:1946"

Пример

Давайте обработаем ошибку при поиске несуществующего домена:

gopackage main

import (
  "context"
  "fmt"
  "net"
)

func main() {
  ips, err := net.LookupIP(context.Background(), "nonexistent.domain.xyz")
  if err != nil {
    fmt.Println("Error:", err)
    return
  }

  for _, ip := range ips {
    fmt.Println(ip)
  }
}

Результат выполнения кода:

go"Error: lookup nonexistent.domain.xyz: no such host"

Смотрите также

  • функцию net.LookupHost,
    которая выполняет поиск хостов и возвращает строковые адреса
  • функцию net.LookupAddr,
    которая выполняет обратный DNS-поиск IP-адреса
  • функцию net.LookupCNAME,
    которая возвращает каноническое имя для хоста
  • функцию net.ParseIP,
    которая преобразует строку в IP-адрес