用go语言建一个简易服务器,怎样在获取客户端的IP?

我想每次客户端访问时,把客户端的IP地址写到 ResponseWriter 里。能否实现?望不吝指点。

代码:

package main

import (
    "io"
    "log"
    "net/http"
)


type myMUX struct {
}

func (m *myMUX) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path == "/" { //如果客户端的访问路径是网站的根路径
        io.WriteString(w, "Hello, 您访问了根页面。")
     // io.WriteString(w, w, r.RemoteAddr) 调用RemoteAddr,输出的是 “[::1]:44362” 之类的字符串
        return
    }

    http.NotFound(w, r)
    return
}

func main() {
    mux := &myMUX{}
    err := http.ListenAndServe(":9090", mux) //设置监听的端口
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

共 7 个回复


snake117

request里的RemoteAddr

# 0

xxdsan

请问调用了RemoteAddr方法,为何显示[::1]:44362这类的字符串?

# 1

David

@xxdsan, your code?

# 2

nanjishidu

感觉可以看下 beego context模块下的input对象IP ,

# 3

snake117

@xxdsan 那个好象是ipv6格式的地址。

# 4

captain

试下at自己。 @captain

# 5