在用golang建立web时,不管是用原生库还是使用gin框架,发现服务器起来后最终都会监听到tcp6。查stackoverflow得知,如果想要默认监听tcp4/tcp6需要修改下源码。
修改$GOROOT/src/net/http/server.go
2813行/2842行处函数(视golang版本而定)
func (srv *Server) ListenAndServe() error { if srv.shuttingDown() { return ErrServerClosed } addr := srv.Addr if addr == "" { addr = ":http" } ln, err := net.Listen("tcp", addr) if err != nil { return err } return srv.Serve(ln) }
修改前这一行:ln, err := net.Listen("tcp", addr)
改完后为:ln, err := net.Listen("tcp4", addr)
然后,再启动服务,成功监听到tcp4。