如何在 GO 中获取 LocalAddress?

How to get the LocalAddress in GO?

我正在制作一个充当代理的网络服务器。我需要获取有关客户的信息才能做出回应。 这是我的代码:

func main(){

    li, err := net.Listen("tcp", ":8000")
    if err != nil{
        log.Fatalln(err.Error())
    }
    defer li.Close()

    for{

        conn, err := li.Accept()
        if err != nil {
            log.Fatalln(err.Error())
        }
        local := conn.LocalAddr
        remote := conn.RemoteAddr
        fmt.Println(string(local.Network))
        fmt.Println(string(remote.String))

        go handleConn(conn)
    }
}

问题是当我 运行 收到此消息时:

local.Network undefined (type func() net.Addr has no field or method Network)

但是文档说 Addr 类型有这个方法

https://golang.org/pkg/net/#Conn

https://golang.org/pkg/net/#Addr

您没有调用该函数,在您的 local 变量中您正在存储函数本身。

试试这个:

local := conn.LocalAddr()
remote := conn.RemoteAddr()