Lua Socket开发

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

猜你喜欢

转载自lobin.iteye.com/blog/2435795
今日推荐