lua + libuv 实现tcp echo

借助libuv强大的功能很容易实现lua相关的功能
c 端代码很简单,使用上一篇的也可以

lua端

local uv = require('luv')

local function create_server(host, port, on_connection)

    local server = uv.new_tcp()
    server:bind(host, port)

    server:listen(128, function(err)
        -- Make sure there was no problem setting up listen
        assert(not err, err)
        print("accept one");
        -- Accept the client
        local client = uv.new_tcp()
        server:accept(client)

        on_connection(client)
    end)

    return server
end

local server = create_server("0.0.0.0", 0, function (client)

client:read_start(function (err, chunk)

    -- Crash on errors
    assert(not err, err)

    if chunk then
        -- Echo anything heard
        client:write(chunk)
    else
        -- When the stream ends, close the socket
        client:close()
    end
    end)
end)

print("TCP Echo serverr listening on port " .. server:getsockname().port)

uv.run()

测试,使用telnet测试
命令行输入 telnet 127.0.0.1 端口
随机输入内容,自动回显内容,借助libuv强大的功能很容易实现lua相关的功能

结束telnet 功能为 按下 ctrl + ] 退出链接返回 telnet , 输入quit退到命令行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值