kad.lua
local socket = require("socket") local tcp, err = socket.tcp() if tcp == nil then print(err) error() end tcp:setoption("reuseaddr",true) local result, err = tcp:bind("localhost", 3131) print(result) print(err) if result == nil then print(err) error() end result,err = tcp:listen(50) if result == nil then print(err) error() end print "listening" local stop = false while not stop do tcp:settimeout(0.01) local client, err = tcp:accept() if client ~= nill then local co local fn = function(sock) print(co) while not stop do local rb, err = sock:receive() print "" if rb ~= nil then if rb == "STOP" then stop = true else print("read "..rb) sock:send(rb) end end end -- coroutine.resume(co, sock) end co = coroutine.create(fn) coroutine.resume(co, client) end end
运行服务端程序:
>lua kad.lua 1 nil listening
运行Telnet连接到服务器:
>telnet localhost 3131
>lua kad.lua 1 nil listening thread: 003C6B68 read abcdefg read abcdefg read abcdefg read 1111111
Lua的一些资料:https://lobin.iteye.com/blog/2339953