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

服务器,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

最新文章

  1. jquery做一些小的特效
  2. BZOJ 1878: [SDOI2009]HH的项链
  3. jquer基础篇二
  4. jQuery(window) 和 jQuery(document)的区别
  5. jenkins远程命令执行利用工具
  6. How to include JavaScript file in JSF
  7. ThinkPHP3.1新特性:命名范围
  8. 【转】在Eclipse环境下配置Servlet开发环境
  9. iOS_block内存分析
  10. Oracle User Management FAQ翻译及学习笔记
  11. JPA Advanced Mappings(映射)
  12. Java(15) 多态
  13. 封装一个 员工类 使用preparedStatement 查询数据 (1)
  14. NodeJS 模块&函数
  15. Java数值类型之间转换
  16. Google浏览器清除缓存快捷键
  17. JavaScript运算符:递增递减运算符前置和后置的区别
  18. js和jquery获取span里面的值
  19. MT【161】韦恩图
  20. springmvc+spring+mybatis+maven项目构建

热门文章

  1. Java List的分段操作
  2. SSL连接分为两个阶段:握手和数据传输阶段
  3. fiddler抓包常用功能详解
  4. uarts裸机程序
  5. Scala笔记
  6. CAS 原理
  7. centos7安装webmin
  8. VS Code Html Zen coding
  9. Navicat工具的使用 1
  10. Java基础知识(JAVA之IO流)