zoukankan      html  css  js  c++  java
  • Lua 服务器Socket通信实例

    local socket = require"socket"

    local host = "127.0.0.1"
    local port = "843"
    local sever = assert(socket.bind(host, port)) --绑定
    sever:settimeout(nil)   --不设置阻塞
    local tab = {}
    table.insert(tab, sever)

    while 1 do
      local s
      s,_,_ = socket.select(tab, nil, nil)
      for k, v in ipairs(s) do
        if v == sever then
        local conn  = v:accept()  --连接
        table.insert(tab, conn)
     else
       c, e = v:receive() --接收
       if c == nil then
      table.remove(tab, k)
      v:close()
        else
      if e ~= "closed" then
        print(c)
        v:send("ok ") --发送
      else
        break
      end
       end
     end
      end
    end

    --ack="ack "

    --[[while 1 do
      local conn = sever:accept()
      if conn then
     print("accep")
      end
    end--]]

    服务器的几个主要动作如下: 
         1.创建监听套接字,绑定,监听; 
         2.创建工作者线程; 
         3.创建一个套接字数组,用来存放当前所有活动的客户端套接字,每accept一个连接就更新一次数组; 
         4.接受客户端的连接。

  • 相关阅读:
    Activator.CreateInstance 反射实例化对象
    MVC Form提交
    Redis 下载
    List<T> 序列化与反序列化
    快速反射DataTable
    数据库特性
    javascript判断文件大小
    MD5
    HttpHelper
    cacheHelper
  • 原文地址:https://www.cnblogs.com/xiyushimei/p/8597022.html
Copyright © 2011-2022 走看看