上一篇文章中,自己為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