L
Size: a a a
S
local t = setmetatable({}, {__index = table})
И будет работать.local arrmt = {__index = table}
function array(t)
return setmetatable(t or {}, arrmt)
end
Тогда будешь мутить всякие массивы с arr:insert()/arr:remove().m
S
function table.hlen(tbl)
local i. k = 0, next(tbl)
while k do
i = i + 1
k = next(tbl, k)
end
return i
endAG
local socket = require("socket")
local host = hostIP
local port = 23
local tcp = assert(socket.tcp())
tcp:connect(host, port)
---
while tcp do
local res, err = tcp:receive()
dosomething(res, err)
local command = GetComm()
tcp:send(command..'\r\n')
endШТ
AG
...
tcp:connect(host, port)
tcp:settimeout(5)
...S
tcp:receive() без аргументов ждёт разрыва соединения. Чтобы принять строку с разделителем \r\n — используй tcp:receive("*l").S
tcp:receive(), когда что-то придёт — оно тебе обязательно скажет, и в цикле ты можешь делать что-то ещё помимо сетевого соединения.S
err при receive, если оно прекращено — напишет не timeout а closed.AG
S
local socket = require("socket")
local host = hostIP
local port = 23
local tcp = assert(socket.tcp())
tcp:settimeout(0)
local status = tcp:connect(host, port)
---
while status ~= 'closed' do
-- команды telnet однострочные,
-- поэтому "*l", т.е. line
local data
data, status = tcp:receive("*l")
if data then
dosomething(data, status)
end
local command = GetComm()
if command then
tcp:send(command..'\r\n')
end
socket.sleep(0.03)
endAG