體驗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