【发布时间】:2014-03-25 15:34:30
【问题描述】:
我正在尝试使用 LuaSocket 库测试 Corona SDK 中是否存在互联网连接。
我找到了这个解决方案:
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
它总是返回“无连接”
【问题讨论】:
标签: sockets lua coronasdk luasocket