Golang net / http库提供了Request struct, 这是运行服务器时返回的对象。
该结构包含RemoteAddr:字符串。
这包含远程(客户端)IP地址和客户端端口号。当然可以是IPv4或IPv6。
(当客户端在本地主机上时)看到的IPv6示例值是:
"[::1]:53947"
IPv4示例为:
"127.0.0.1:54572"
是否有库函数可将它们分解为主机和端口,还是有必要使用字符串操作?
答案 0 :(得分:4)
我认为您正在寻找net.SplitHostPort:
func main() {
host, _, _ := net.SplitHostPort("[::1]:53947")
fmt.Println(host)
host, _, _ = net.SplitHostPort("127.0.0.1:54572")
fmt.Println(host)
}
https://play.golang.org/p/BuQRhD0sL54
由于您需要的只是主机,因此可以_
端口。如果您需要其他方法,也可以使用net.JoinHostPort。