Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/Socket1.lua.html -- http://anggtwu.net/LUA/Socket1.lua -- (find-angg "LUA/Socket1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/Socket1.lua")) -- (find-es "lua5" "luasocket-2023") -- (find-es "lua5" "luasocket-listener") -- (find-es "lua5" "lua-json") -- «.test3» (to "test3") socket = require "socket" json = require "json" Socket = Class { type = "Socket", bind = function (address, port) return Socket { sock=socket.bind(address, port) } end, __index = { test1 = function (s) local conn = assert(s.sock:accept()) local line,err = conn:receive() while not err do print(l); line,err = conn:receive() end print(err) return s end, -- jsondecode = function (s,j) return json.decode.decode(j, {nothrow=true}) end, jsonincomplete = function (s,j) if j == "" then return "Empty" end local o,err = s:jsondecode(j) return err and err:match("Unclosed") end, receivejson = function (s) s.conn,s.json = assert(s.sock:accept()), "" while s:jsonincomplete(s.json) do local line,err = s.conn:receive() s.json = s.json..line.."\n" end return s:jsondecode(s.json) end, test2 = function (s) end, }, } --[[ * (find-3EE '(eepitch-shell) '(eepitch-lua51)) * (find-3ee '(eepitch-shell) '(eepitch-lua51)) * (eepitch-shell) * (eepitch-lua51) dofile "Socket1.lua" mys = Socket.bind("127.0.0.1", 5555) mys:test1() * * (eepitch-shell) f () { netcat -q 0 localhost 5555; } g () { echo hi; sleep 1; echo bye; sleep 1; } g | f --]] --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Socket1.lua" mys = Socket {} myj = '{"1":"foo","a":123}' = mys:jsonincomplete("") = mys:jsonincomplete(myj) = mys:jsonincomplete(myj:sub(1,-2)) --]] -- «test3» (to ".test3") --[[ * (find-3EE '(eepitch-shell) '(eepitch-lua51)) * (find-3ee '(eepitch-shell) '(eepitch-lua51)) * (eepitch-shell) * (eepitch-lua51) dofile "Socket1.lua" mys = Socket.bind("127.0.0.1", 5555) o = mys:receivejson() * * (eepitch-shell) f () { netcat -q 0 localhost 5555; } f () { netcat localhost 5555; } g () { for i in $*; do echo "$i"; sleep 1; done; } # g '{"1":"foo",' '"a":123}' ' ' g '{"1":"foo",' '"a":123}' ' ' | f * * (eepitch-lua51) PP(o) mys.sock:send("ok") mys.sock.send("ok") = mys.sock -- (find-es "lua5" "luasocket-2023") { myj = '{"1":"foo","a":123}' --]] -- Local Variables: -- coding: utf-8-unix -- End: