lua里面的客户端服务器协议,Lua 服务器与客户端实例(转)

===============================================================

服务器,main.lua

===============================================================

local socket = require ( "socket" )

local tcpServer = nil

--创建指定端口的tcp server

local function createTCPServer( port )

-- Create Socket

local tcpServerSocket , err = socket.tcp()

local backlog = 5

-- Check Socket

if tcpServerSocket == nil then

return nil , err

end

-- Allow Address Reuse

tcpServerSocket:setoption( "reuseaddr" , true )

-- Bind Socket

local res, err = tcpServerSocket:bind( "*" , port )

if res == nil then

return nil , err

end

-- Check Connection

res , err = tcpServerSocket:listen( backlog )

if res == nil then

return nil , err

end

-- Return Server

return tcpServerSocket

end

--接受来自客户端的连接,并保存在tcpClient

local tcpClient = nil

local function acceptClient()

tcpServer:settimeout( 0 )

clientIn , _ = tcpServer:accept()

if clientIn then

tcpClient = clientIn

end

end

--接收已连接的客户端(tcpClient)数据

local function receiveLoop()

if tcpClient ~= nil then

local tcpClientMessage , _ = tcpClient:receive(‘*l‘)

if ( tcpClientMessage ~= nil ) then

print(tcpClientMessage)

tcpClient:send( "back:" .. tcpClientMessage .. "\n")

end

end

end

local function main()

tcpServer , _ = createTCPServer( 8080 )

if tcpServer then

Runtime:addEventListener( "enterFrame" , acceptClient )

Runtime:addEventListener( "enterFrame" , receiveLoop )

end

end

main()

===============================================================

客户端程序,main.lua

===============================================================

local ui = require("ui")

local socket = require("socket")

local tcpClient = nil

--接收来自服务器的数据

local function receiveData()

if tcpClient then

tcpClient:settimeout(0)

local msg = tcpClient:receive("*l")

if msg then

print(msg)

end

end

end

--向服务器发送数据

local index = 0

local function btnListener(event)

index = index + 1

if tcpClient then

tcpClient:send("pack index:" .. index .. ".\n")

end

end

--初始化

local function main()

local btn = ui.newButton{

default = "buttonBlue.png",

over = "buttonBlueOver.png",

onRelease = btnListener,

id = "btn"

}

btn:setReferencePoint(display.TopLeftReferencePoint)

btn.x = 10

btn.y = 100

--创建tcp连接

tcpClient = socket.tcp()

if tcpClient then

local ret = tcpClient:connect("192.168.1.2", 8080)

if ret then

tcpClient:send("hi, server, i‘m client.\n")

Runtime:addEventListener("enterFrame", receiveData)

end

end

end

main()

lua socket相关文档参见:http://w3.impa.br/~diego/software/luasocket/tcp.html

http://blog.csdn.net/chunleixiahe/article/details/41683427

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值