|
@@ -1,17 +1,35 @@
|
|
|
- -- a simple telnet server
|
|
|
- s=net.createServer(net.TCP,180)
|
|
|
- s:listen(2323,function(c)
|
|
|
- function s_output(str)
|
|
|
- if(c~=nil)
|
|
|
- then c:send(str)
|
|
|
- end
|
|
|
- end
|
|
|
- node.output(s_output, 0) -- re-direct output to function s_ouput.
|
|
|
- c:on("receive",function(c,l)
|
|
|
- node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
|
|
|
- end)
|
|
|
- c:on("disconnection",function(c)
|
|
|
- node.output(nil) -- un-regist the redirect output function, output goes to serial
|
|
|
- end)
|
|
|
- print("Welcome to NodeMcu world.")
|
|
|
- end)
|
|
|
+-- a simple telnet server
|
|
|
+
|
|
|
+telnet_srv = net.createServer(net.TCP, 180)
|
|
|
+telnet_srv:listen(2323, function(socket)
|
|
|
+ local fifo = {}
|
|
|
+ local fifo_drained = true
|
|
|
+
|
|
|
+ local function sender(c)
|
|
|
+ if #fifo > 0 then
|
|
|
+ c:send(table.remove(fifo, 1))
|
|
|
+ else
|
|
|
+ fifo_drained = true
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ local function s_output(str)
|
|
|
+ table.insert(fifo, str)
|
|
|
+ if socket ~= nil and fifo_drained then
|
|
|
+ fifo_drained = false
|
|
|
+ sender(socket)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ node.output(s_output, 0) -- re-direct output to function s_ouput.
|
|
|
+
|
|
|
+ socket:on("receive", function(c, l)
|
|
|
+ node.input(l) -- works like pcall(loadstring(l)) but support multiple separate line
|
|
|
+ end)
|
|
|
+ socket:on("disconnection", function(c)
|
|
|
+ node.output(nil) -- un-regist the redirect output function, output goes to serial
|
|
|
+ end)
|
|
|
+ socket:on("sent", sender)
|
|
|
+
|
|
|
+ print("Welcome to NodeMcu world.")
|
|
|
+end)
|