http - 如何在 GO 中获取 LocalAddress?

标签 http go ip webserver

我在 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()

关于http - 如何在 GO 中获取 LocalAddress?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556060/

相关文章:

javascript - 使用 switchMap 取消订阅先前的 http 请求并仅获取最新的请求

go - 如何检查时间是否以毫秒为单位

git - 如何将 go pkg 添加到现有仓库?

c# - 选择具有多个 IP 时 HTTP 请求使用的 IP (.NET)

security - 一次性csrf token的优点

ios - 有选择地在 Mac OS X 上为 iOS 模拟器使用 Charles Proxy

java - 我如何检查IP是否在java中存在?

c++ - 将结果存储在 C++ 文件中

c++ - curl:使用 multipart 和 post 参数

mysql - global var out out init.go in revel