http - 从 net/http.Request.RemoteAddr 获取 IP 地址的最简洁方法是什么
问题描述
Golang net/http 库提供了一个Request struct,它是运行服务器时返回的对象。
该结构包括 RemoteAddr: 字符串。
这包含远程(客户端)IP 地址和客户端端口号。它当然可以是 IPv4 或 IPv6。
看到的 IPv6 示例值(当客户端在本地主机上时)是:
"[::1]:53947"
IPv4 示例是:
"127.0.0.1:54572"
是否有库函数可以将它们分解为主机和端口,或者是否有必要使用字符串操作?
解决方案
我认为您正在寻找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。
推荐阅读
- python - 如何以矢量化的方式从 spacy 的管道中获取文本嵌入?
- react-native - 我使用 npx 安装了 react-native。当我运行 npx react-native run-android 时,它给了我以下错误。IT 打开 AVD 但未显示应用程序
- javascript - 单击更改 ID 和类别
- discord.js - 如何为不和谐机器人创建踢命令?
- html - 无法识别来自 css 文件的 Div 样式
- python - 在 Python 中使用 QuickSelect 查找第 K 个最大的元素
- mysql - PhpStorm MySQL连接如何检查查询是否进行全表扫描
- javascript - 使用两个放置区域拖放 - 跳跃元素
- hibernate - 如何将 wildfly 20.0.1 配置为休眠 5.5 JTA 事务?
- javascript - 将上传的照片设置为网站背景图片