Go言語でIPv6ではなくIPv4でhttp通信を待ち受けたい
環境
go version go1.21.5 windows/amd64
起きた問題
go http.ListenAndServe(":8080", nil)
このような書き方でhttp通信を立ち上げたところIPv6でのみサーブされ、他プロセスから繋げませんでした
sudo lsof -i :8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hoge 2494704 fuga 7u IPv6 xxxxxxxx 0t0 TCP *:8080 (LISTEN)
どうにも:8080
の場合v4とv6のどちらを使うかはosの設定に依存するようです
0.0.0.0:8080
で起動するという対処法も出てきたのですが、上手く行かず
対処法
netライブラリでtcp4を呼び出しました
ln, err := net.Listen("tcp4", "0.0.0.0:8080")
if err != nil {
log.Fatal(err)
}
go http.Serve(ln, nil)
これで一件落着
コメント