上一篇文章中,自己为lua提供了一个简单的网络接口功能以实现以个echo服务。
昨晚在网上查阅lua网络相关的库,发现了luasocket,于是也用luasocket实现了一个echo服务以作比较.
要使用luasocket首先到http://luaforge.net/projects/luasocket/下载luasocket.
下面是代码
tcpechosrv.lua
local socket = require("socket") local server = assert(socket.bind("*", 0)) local ip, port = server:getsockname() print("Please telnet to localhost on port " .. port) local all_read = {} table.insert(all_read,server) while 1 do local ready_forread ready_forread,_,_ = socket.select(all_read,nil,nil) for k,v in ipairs(ready_forread) do if v == server then print(" a new commer") local client = v:accept() table.insert(all_read,client) else local line, err = v:receive() if line == nil then table.remove(all_read,k) v:close() print("a user disconnect") else print (line) if not err then --下面检查套接口是否可写,如果可写就把文本发送回去 local for_write = {} table.insert(for_write,v) local ready_forwrite _,ready_forwrite,_ = socket.select(nil,for_write,1) if #ready_forwrite > 0 then v:send(line .. "/n") print("send ok") end end end end end end