Go 言語(以下 Golang)で作成したアプリを実行しているマシンのローカル IP アドレスが知りたい。
複数の NIC(ネットワークカード)がある場合でも、外部からアクセス可能な方の IP アドレスが知りたい。
「"golang" ローカルのIPアドレスを取得する」でググっても、タイトルからわかるドンピシャの記事がなかったので、自分のググラビリティとして。
TL; DR (今北産業)
import "net"
// GetOutboundIP returns the outbound IP address of this machine.
func GetOutboundIP() (string, error) {
// net.Dial で一度外部にアクセスして、使用したネットワークカードの
// 情報を取得する。アクセス先は、存在する IP アドレスであれば
// 8.8.8.8 でなくても構わない。
conn, err := net.Dial("udp", "8.8.8.8:80")
if err != nil {
return "", err
}
defer conn.Close()
// 使用しているネットワークカードのローカル IP を取得
localAddr := conn.LocalAddr().(*net.UDPAddr)
return localAddr.IP.String(), nil
}
- オンラインで動作をみる @ Go Playground
- 参考文献:
- コメント | "How do I get the local IP address in Go?" @ StackOverflow