github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgGetIP/main.go (about) 1 package kmgGetIP 2 3 import ( 4 "github.com/bronze1man/kmg/kmgErr" 5 "github.com/bronze1man/kmg/kmgNet/kmgHttp" 6 "io/ioutil" 7 "net/http" 8 "strings" 9 ) 10 11 //Server Side 12 func GetIPFromCTXAndRespond(ctx *kmgHttp.Context) { 13 req := ctx.GetRequest() 14 address := req.RemoteAddr 15 address = strings.Split(address, ":")[0] 16 ctx.WriteString("OK" + address) 17 } 18 19 //Client Side 20 func GetIPFromRemote(remoteServerUrl string) (ip string) { 21 resp, err := http.Get(remoteServerUrl) 22 kmgErr.PanicIfError(err) 23 body, err := ioutil.ReadAll(resp.Body) 24 kmgErr.PanicIfError(err) 25 ip = string(body) 26 if !strings.HasPrefix(ip, "OK") { 27 panic("WhoAmI Error: can not get a Ipv4 address " + ip) 28 } 29 return strings.TrimPrefix(ip, "OK") 30 }