Externe IPv4/IPv6-Adresse in Go abrufen

English Deutsch

Du kannst die HTTP-API von IPIfy in Go verwenden:

external_ip_lib.go
import (
    "io/ioutil"
    "net/http"
)

func GetExternalIPv4Address() (string, error) {
    // Anfrage ausführen
    resp, err := http.Get("https://api4.ipify.org")
    if err != nil {
        return "", err
    }
    // Cleanup, wenn diese Funktion endet
    defer resp.Body.Close()
    // Alle Antwortdaten in ein []byte einlesen
    body, err := ioutil.ReadAll(resp.Body)
    // Dekodieren & ausgeben
    return string(body), nil
}

func GetExternalIPv6Address() (string, error) {
    // Anfrage ausführen
    resp, err := http.Get("https://api6.ipify.org")
    if err != nil {
        return "", err
    }
    // Cleanup, wenn diese Funktion endet
    defer resp.Body.Close()
    // Alle Antwortdaten in ein []byte einlesen
    body, err := ioutil.ReadAll(resp.Body)
    // Dekodieren & ausgeben
    return string(body), nil
}

Verwendungsbeispiel:

main_get_ip.go
package main

func main() {
    v4, _ := GetExternalIPv4Address()
    v6, _ := GetExternalIPv6Address()
    println(v4)
    println(v6)
}

Wenn du beide Dateien in einem Verzeichnis namens GoIPAddress speicherst, kannst du ausführen

run_get_ip_example.sh
$ go build
$ ./GOIPAddress
31.190.168.110
2a03:4012:2:1022::1

Check out similar posts by category: Go, Networking