2013-01-22 163 views
1

看起來像是setting timeout對於Lua套接字只能在connect之後工作,而我不能使用assert (socket.connect (..)),因爲我有多臺服務器可以試用。Lua設置連接超時

我的情況是,當一臺服務器關閉(無法連接而不是不穩定的網絡)時,我將訴諸另一臺服務器,所以我必須在連接上有超時。

有什麼建議嗎?

編輯

我發現Lua的TCP套接字,但是,我是無法檢測到連接失敗,

local tcp = socket.tcp() 
tcp:settimeout(1) 
tcp:connect(...) 

回答

5

如果它不工作,很可能是因爲您的luasocket太舊,更新到版本2:

從LuaSocket 2.0開始,settimeout方法會影響connect的行爲,導致它返回一個帶有cas的錯誤e超時。

(來源:http://w3.impa.br/~diego/software/luasocket/tcp.html#connect

+0

但對Socket.connect之前,對象是零,沒有辦法調用的setTimeout(),是我錯了嗎? – daisy

+1

不,您需要使用編輯中的兩步法(創建TCP套接字,然後設置超時,然後連接)。 – catwell