我想在Corona SDK中使用LuaSocket庫來測試互聯網連接的存在。LuaSocket測試互聯網連接的存在
我發現這個解決方案:
function test()
local connection = socket.tcp()
connection:settimeout(1000)
local result = connection:connect("www.google.com", 80)
connection:close()
if (result) then return true end
return false
end
但有一個問題:如果有一個壞的/不穩定的連接,該程序被阻止,直至插槽運行(各種秒)。
所以,我想是這樣的:
connection:settimeout(1000, 't')
但它是非常不準確的(它返回false那裏有一個小的網絡延遲)。有一個更好的方法?
也許使插座不被阻塞?
更新2: 我嘗試這樣的代碼,但我真的不能明白,如果它是有道理的......
local socket = require("socket")
function test(callback, timeout)
if timeout == nil then timeout = 1000 end
local connection = socket.tcp()
connection:settimeout(0)
connection:connect("www.google.com", 80)
local t
t = timer.performWithDelay(10, function()
local r = socket.select({connection}, nil, 0)
if r[1] or timeout == 0 then
connection:close()
timer.cancel(t)
callback(timeout > 0)
end
timeout = timeout - 10
end , 0)
end
它總是返回「無連接」
哇,我不知道該功能! 它似乎不適用於所有設備......你知道哪一個不支持? – ProGM
我不知道哪些設備不受支持,但是您可以在運行時使用此http://docs.coronalabs.com/api/library/network/canDetectNetworkStatusChanges.html進行檢查。 –