Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssertIPv4 ¶
func GetLocalIPs ¶
GetLocalIPs
流程:
使用 net.InterfaceAddrs() 来获取所有网卡的地址,然后遍历这些地址,找到 IPv4地址 且 不是回环地址 的IP地址
缺陷:
这种方法无法直接获取到对外的IP地址,只能判断IPv4和非回环地址,多IP情况还需要额外进行判断。
func GetOutboundIP ¶
GetOutboundIP 获取: 对外的ip地址
系统性能数据gopsutil库
https://topgoer.com/%E5%85%B6%E4%BB%96/%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E6%95%B0%E6%8D%AEgopsutil%E5%BA%93.html
通过 UDP 获取本机 IP
http://t.zoukankan.com/fousor-p-14874576.html
PS: 由于会申请一个UDP的端口,所以如果经常调用也会比较耗时的,这里如果需要可以将查询到的IP给缓存起来,性能可以获得很大提升.
流程: (1) 使用 net.Dial 连接到一个外部地址(例如“8.8.8.8:53”), (2) 然后通过 conn.LocalAddr() 获取到本地IP地址.
优点:
这种方法可以直接获取到对外的IP地址. (a) 使用 UDP 的优点是不需要关注是否送达,只需要对应的 {ip}:{port} 结构正确,即可获取到IP地址; (b) 这里使用TCP 也是可以的,只是需要保证对应的 {ip}:{port} 连通性.
Types ¶
Click to show internal directories.
Click to hide internal directories.