Files
ppgo_job/libs/ip.go
2019-07-03 22:31:27 +08:00

53 lines
1.0 KiB
Go

/************************************************************
** @Description: ip
** @Author: george hao
** @Date: 2019-06-27 09:20
** @Last Modified by: george hao
** @Last Modified time: 2019-06-27 09:20
*************************************************************/
package libs
import (
"io/ioutil"
"net"
"net/http"
)
func GetHostIp(IpType int) string {
if IpType == 0 {
return LocalIp()
} else {
return PublicIp()
}
}
func LocalIp() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
return ""
}
for _, address := range addrs {
// 检查ip地址判断是否回环地址
if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
return ipnet.IP.String()
}
}
}
return ""
}
func PublicIp() string {
resp, err := http.Get("http://myexternalip.com/raw")
if err != nil {
return ""
}
defer resp.Body.Close()
content, _ := ioutil.ReadAll(resp.Body)
//buf := new(bytes.Buffer)
//buf.ReadFrom(resp.Body)
//s := buf.String()
return string(content)
}