欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang獲取客戶端ip的實(shí)現(xiàn)

 更新時(shí)間:2023年07月04日 10:41:41   作者:沉默小管  
本文主要介紹了golang獲取客戶端ip的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

網(wǎng)絡(luò)上的答案獲取的ip是服務(wù)器的ip或者獲取本地ip,然后通過(guò)ip獲取詳細(xì)地址,要么報(bào)錯(cuò),要么或者客戶端的位置不正確…直接給我整麻了~

網(wǎng)絡(luò)答案:

獲取局域網(wǎng)ip

func GetOutBoundIP() (ip string, err error) {
    conn, err := net.Dial("udp", "8.8.8.8:53")
    if err != nil {
        fmt.Println(err)
        return
    }
    localAddr := conn.LocalAddr().(*net.UDPAddr)
    ip = strings.Split(localAddr.String(), ":")[0]
    return
}

獲取外網(wǎng)能訪問(wèn)的動(dòng)態(tài)ip,獲取的是本機(jī)的ip不是客戶端的ip

func GetOutBoundIP(ctx iris.Context) (ip string, err error) {
    resp, err := http.Get("http://myexternalip.com/raw")
    if err != nil {
        return "",err
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    ip = string(body)
    return
}

后來(lái)發(fā)現(xiàn)以上都不適合或者客戶端ip

獲取客戶端ip

//通過(guò)iris的context內(nèi)部函數(shù)獲取請(qǐng)求頭部獲取ip
func GetOutBoundIP(ctx iris.Context) (string, error) {
?? ?//從請(qǐng)求頭部的X-REAL-IP獲取Ip
?? ?ip := ctx.Request().Header.Get("X-REAL-IP")
?? ?netIP := net.ParseIP(ip)
?? ?if netIP != nil {
?? ??? ?return ip, nil
?? ?}
?? ?//從請(qǐng)求頭部的X-FORWARDED-FOR獲取Ip
?? ?ips := ctx.Request().Header.Get("X-FORWARDED-FOR")
?? ?splitIps := strings.Split(ips, ",")
?? ?for _, ip := range splitIps {
?? ??? ?netIP := net.ParseIP(ip)
?? ??? ?if netIP != nil {
?? ??? ??? ?return ip, nil
?? ??? ?}
?? ?}
?? ?//從請(qǐng)求頭部的RemoteAddr獲取Ip
?? ?ip, _, err := net.SplitHostPort(ctx.Request().RemoteAddr)
?? ?if err != nil {
?? ??? ?return "", err
?? ?}
?? ?netIP = net.ParseIP(ip)
?? ?if netIP != nil {
?? ??? ?return ip, nil
?? ?}
?? ?return "", fmt.Errorf("正確ip獲取失敗")
}

到此這篇關(guān)于golang獲取客戶端ip的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)golang獲取客戶端ip內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語(yǔ)言使用Swiss Table實(shí)現(xiàn)更快的map

    Go語(yǔ)言使用Swiss Table實(shí)現(xiàn)更快的map

    wiss Table 是一種高效的哈希表實(shí)現(xiàn),最初由 Google 在 C++ 中引入,后來(lái)也被其他語(yǔ)言(如 Rust)采用,下面我們看看如何使用 Swiss Table 的思想來(lái)實(shí)現(xiàn)一個(gè)更快的 Go map
    2025-03-03
  • Go語(yǔ)言使用Buffer實(shí)現(xiàn)高性能處理字節(jié)和字符

    Go語(yǔ)言使用Buffer實(shí)現(xiàn)高性能處理字節(jié)和字符

    在?Go?中,bytes.Buffer?是一個(gè)非常高效的類型,用于處理字節(jié)數(shù)據(jù)的讀寫操作,本文將詳細(xì)介紹一下如何使用Buffer實(shí)現(xiàn)高性能處理字節(jié)和字符,有需要的小伙伴可以了解下
    2025-01-01
  • Go語(yǔ)言LeetCode題解961在長(zhǎng)度2N的數(shù)組中找出重復(fù)N次元素

    Go語(yǔ)言LeetCode題解961在長(zhǎng)度2N的數(shù)組中找出重復(fù)N次元素

    這篇文章主要為大家介紹了Go語(yǔ)言LeetCode題解961在長(zhǎng)度2N的數(shù)組中找出重復(fù)N次元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 快速掌握Go語(yǔ)言正/反向代理

    快速掌握Go語(yǔ)言正/反向代理

    這篇文章主要介紹了快速掌握Go語(yǔ)言正/反向代理的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • golang DNS服務(wù)器的簡(jiǎn)單實(shí)現(xiàn)操作

    golang DNS服務(wù)器的簡(jiǎn)單實(shí)現(xiàn)操作

    這篇文章主要介紹了golang DNS服務(wù)器的簡(jiǎn)單實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Golang中Channel實(shí)戰(zhàn)技巧與一些說(shuō)明

    Golang中Channel實(shí)戰(zhàn)技巧與一些說(shuō)明

    channel是Go語(yǔ)言內(nèi)建的first-class類型,也是Go語(yǔ)言與眾不同的特性之一,下面這篇文章主要給大家介紹了關(guān)于Golang中Channel實(shí)戰(zhàn)技巧與一些說(shuō)明的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的并發(fā)網(wǎng)頁(yè)爬蟲示例

    go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的并發(fā)網(wǎng)頁(yè)爬蟲示例

    在這個(gè)章節(jié)中,我們將會(huì)結(jié)合之前的知識(shí)點(diǎn),實(shí)現(xiàn)一個(gè)簡(jiǎn)易的并發(fā)網(wǎng)頁(yè)爬蟲,我們的爬蟲會(huì)先爬取一個(gè)起始頁(yè)面,提取出所有的鏈接,然后并發(fā)地爬取這些鏈接,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-08-08
  • go中switch語(yǔ)句的用法詳解

    go中switch語(yǔ)句的用法詳解

    在Go中的switch語(yǔ)句類似于C、C++、Java、JavaScript和PHP中的switch語(yǔ)句,不同之處在于它只執(zhí)行匹配的case,因此不需要使用break語(yǔ)句,下面我們就一起來(lái)學(xué)習(xí)一下switch語(yǔ)句的具體使用吧
    2023-09-09
  • Golang 的defer執(zhí)行規(guī)則說(shuō)明

    Golang 的defer執(zhí)行規(guī)則說(shuō)明

    這篇文章主要介紹了Golang 的defer執(zhí)行規(guī)則說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 詳解簡(jiǎn)單高效的Go?struct優(yōu)化

    詳解簡(jiǎn)單高效的Go?struct優(yōu)化

    這篇文章主要為大家介紹了簡(jiǎn)單高效的Go?struct優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評(píng)論