Golangではnetパッケージを利用することで簡単にローカルIPアドレスを取得できます。
net.InterfaceAddrs メソッドを使用する
簡単なサンプルコードは次のとおりです。
package main
import (
"fmt"
"net"
)
func main() {
addrList, err := net.InterfaceAddrs()
if err != nil {
panic(err)
}
for _, address := range addrList {
if ipNet, ok := address.(*net.IPNet); ok && !ipNet.IP.IsLoopback() {
if ipNet.IP.To4() != nil {
fmt.Println(ipNet.IP.String())
}
}
}
}
ネット・ダイヤル方式で
udp を使用すると、配信されているかどうかを気にする必要はなく、対応する ip とポートが正しいだけで、ip アドレスを取得できます。簡単なサンプルコードは次のとおりです。
package main
import (
"fmt"
"net"
"strings"
)
func main() {
conn, err := net.Dial("udp", "8.8.8.8:53")
if err != nil {
panic(err)
}
addr := conn.LocalAddr().(*net.UDPAddr)
ip := strings.Split(addr.String(), ":")[0]
fmt.Println(ip)
}