觸動精靈 獲取外網IP

一開始我獲取獲取外網IP,是用的是觸動文檔裏提供的方法:

--獲取外網ip地址
local sz = require("sz")
local http = require("szocket.http")
local res, code = http.request("http://www.ip.cn/");--如果此網址無反應,請嘗試替換爲 http://1212.ip138.com/ic.asp 或其他網址
if code == 200 then
    local i,j = string.find(res, "%d+%.%d+%.%d+%.%d+")
    local ipaddr =string.sub(res,i,j)
    dialog(ipaddr,0)
end

但是有次目標網站訪問失敗,就會使IP地址獲取失敗,過於依賴目標網址,所以我又新找到一個方法去獲取IP地址:

--獲取外網ip
function getIP()
    os.execute("curl ifconfig.me > /var/mobile/ip.txt ")
    local ip= readFileString("/var/mobile/ip.txt")
    if ip~=nil and ip~="" then
        ip= string.gsub(ip,"\\s","")
        local i,j = string.find(ip, "%d+%.%d+%.%d+%.%d+")
        ip =string.sub(ip,i,j)
        nLog("獲取到的ip地址爲:"..ip)
    else
        nLog("未獲取到ip")
        if ip==nil then
            ip=""
        end
    end
    return ip
end

iOS是基於Linux系統,所以使用Linux的命令來獲取外網IP,然後輸出到文件中,讀取文件來獲取IP地址.
但是看到網上的一些信息ifconfig.me好像還會掛? !-_-,如果使用上面的方法還是獲取不到,可以嘗試使用curl ipip.net,curl ip.cn, curl cip.cc, curl myip.ipip.net等多個地址
其他獲取IP地址的信息了來自:http://blog.csdn.net/orangleliu/article/details/51994513


2017/09/18

有次我通過上面的方式去獲取IP地址的信息,但是沒有獲取到,查了下,好像是命令的原因,結果輸出到文件中,但是裏面的內容是空的,而且速度很快不像是進行了網絡訪問的樣子.不知道是不是某些iOS的設備或者是版本不支持的原因,沒太深究,將其換到了自己的服務器上,寫了一個接口可以返回ip地址信息的.算是一個補充吧.

在服務器可以獲取到客戶端的IP地址.然後在客戶端訪問的時候將結果輸出出來就可以了


2018/07/06

如果上面的方法都行不通

百度搜索ip有很多網站提供查看ip的功能,去用http訪問這些網站,然後拿到結果之後解析出其中的ip地址就OK了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章