-- DOC: http://w3.impa.br/~diego/software/luasocket/tcp.html -- module table local luasocket = {} local socket = require("socket") -- Open network connection to .host and .port in conn table -- Store opened socket to conn table -- Returns true on success, or false and error text on failure function luasocket.connect(conn) local sock, err = socket.connect(conn.host, conn.port) if not sock then return false, "socket.connect failed: "..err end conn.sock = sock return true end -- Shutdown network connection function luasocket.shutdown(conn) conn.sock:shutdown() end -- Send data to network connection function luasocket.send(conn, data, i, j) conn.sock:settimeout(nil, "t") local ok, err = conn.sock:send(data, i, j) conn.sock:settimeout(conn.timeout, "t") -- print(" luasocket.send:", ok, err, require("mqtt.tools").hex(data)) return ok, err end -- Receive given amount of data from network connection function luasocket.receive(conn, size) local ok, err = conn.sock:receive(size) --if ok then -- print(" luasocket.receive good:", size, #ok, require("mqtt.tools").hex(ok)) --elseif err ~= "timeout" then -- print(" luasocket.receive fail:", ok, err) --end return ok, err end -- Set connection's socket to non-blocking mode and set a timeout for it function luasocket.settimeout(conn, timeout) conn.timeout = timeout conn.sock:settimeout(timeout, "b") end -- export module table return luasocket -- vim: ts=4 sts=4 sw=4 noet ft=lua