luasocket通讯
来源:互联网 发布:中国国库有多少钱知乎 编辑:程序博客网 时间:2024/05/22 05:25
client.lua
#!/usr/bin/env luaprint "\nclient begin\n"local socket = require("socket")local host = "127.0.0.1"local port = 7777--打开一个tcp连接c = assert(socket.connect(host, port))c:send("I am client\n")while true dolocal s, status, partial = c:receive()print (s)if status == "closed" thenbreakendc:send("client closed\n")endc:close()print "\nclient end\n"server.lua
#!/usr/bin/env lualocal socket = require("socket")local host = "127.0.0.1"local port = 7777local ack = "ack\n"local server = assert(socket.bind(host, port))while true doprint("server:waiting for client connection...")local control = assert(server:accept())while true docommand, status = control:receive()if status == "closed" thenbreakendprint(command)control:send(ack)endend
简单的聊天程序:
client.lua
#!/usr/bin/env lualocal socket = require("socket") local host = "127.0.0.1"local port = 12345local sock = assert(socket.connect(host, port))sock:settimeout(0) print("Press enter after input something:") local input, recvt, sendt, statuswhile true do input = io.read() if #input > 0 then assert(sock:send(input .. "\n")) end recvt, sendt, status = socket.select({sock}, nil, 1) while #recvt > 0 do local response, receive_status = sock:receive() if receive_status ~= "closed" then if response then print(response) recvt, sendt, status = socket.select({sock}, nil, 1) end else break end endend
server.lua
#!/usr/bin/env lualocal socket = require("socket") local host = "127.0.0.1"local port = "12345"local server = assert(socket.bind(host, port, 1024))server:settimeout(0)local client_tab = {}local conn_count = 0 print("Server Start " .. host .. ":" .. port) while 1 do local conn = server:accept() if conn then conn_count = conn_count + 1 client_tab[conn_count] = conn print("A client successfully connect!") end for conn_count, client in pairs(client_tab) do local recvt, sendt, status = socket.select({client}, nil, 1) if #recvt > 0 then local receive, receive_status = client:receive() if receive_status ~= "closed" then if receive then assert(client:send("Client " .. conn_count .. " Send : ")) assert(client:send(receive .. "\n")) print("Receive Client " .. conn_count .. " : ", receive) end else table.remove(client_tab, conn_count) client:close() print("Client " .. conn_count .. " disconnect!") end end endend
阅读全文
0 0
- luasocket通讯
- luasocket
- luasocket
- LuaSocket
- luasocket
- luasocket系列: luasocket tcp
- 安装LuaSocket
- luasocket系列: luasocket hello world!
- [寒江孤叶丶的Cocos2d-x之旅_14]Cocos2d-x 3.2版本以上LUA脚本Socket通讯解决方案——LuaSocket
- Lua基础 安装LuaSocket
- CentOs 安装lua,luasocket
- MAC安装luasocket
- mac下安装LuaSocket
- MonaServer增加luasocket脚本
- luasocket 之 udp
- luasocket 支持ipv6
- 源码安装luasocket
- CentOs 安装lua,luasocket
- 错误的索引统计信息导致oracle expdp导500多G的大分区表时hang住
- 刻度尺选择控件
- 位运算与逻辑运算
- opencv在ubuntu下的安装
- tcpdump遇到类似tcpdump: WARNING: enp0s25: no IPv4 address assigned的解决方法
- luasocket通讯
- 一切都是对象
- HDU 4828 Grids(卡特兰数)
- android快速仿花椒,映客直播上下滑动切换直播间
- 实习笔记:实作第一天工作总结
- LogCat详解、工具类
- 【Shader】应用 ShaderToy 代码的 ShaderLab 模板
- codeforces——268A——Games
- 使用sql生成流水号格式YYYYMMDD0001-YYYYMMDD9999