体验luasocket


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM