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

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

")

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 .. ".

")

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.

")

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

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

  1. 华为云服务器协议,云服务器协议

    云服务器协议 内容精选 换一换 云服务器可以远程连接,但弹性公网IP无法ping通.需要添加安全组的入方向规则并开启ICMP协议.登录管理控制台.选择"计算 > 弹性云服务器" ...

  2. 服务器协议连接,服务器远程连接提示由于协议错误,客户端无法连接到远程计算机...

    服务器远程连接提示由于协议错误,客户端无法连接到远程计算机 更新时间:2012年04月02日 12:55:07   作者: 由于协议错误,客户端无法连接到远程计算机.请请重新连接到远程计算机.如果客户 ...

  3. 认证服务器协议,基于口令的客户端/服务器认证协议

    摘要: Identity authentication is the precondition for secure communication between the client and the ...

  4. lua入门及wireshark自定义协议lua解码

    文章目录 介绍 Lua 特性 lua环境搭建 Window 系统上安装 Lua Lua 基本语法 第一个 Lua 程序 交互式编程 脚本式编程 实例 注释 单行注释 多行注释 标示符 关键词 全局变量 ...

  5. 授权使用服务器协议,RADIUS服务器使用RADIUS协议完成对用户主机的认证、授权和计费时,RADIUS协议工作流程如下:(a)用户 - 赏学吧...

    RADIUS服务器使用RADIUS协议完成对用户主机的认证.授权和计费时,RADIUS协议工作流程如下: (a)用户使用ADSL拨号上网: (b)BRAS从用户处获取用户名和口令,将其与用户其他信息( ...

  6. lua服务器客户端消息回调,lua服务器客户端消息回调

    lua服务器客户端消息回调 内容精选 换一换 介绍使用同一VPC内弹性云服务器ECS上的phpredis连接Redis的方法.更多的客户端的使用方法请参考Redis客户端.本章节操作,仅适用于连接单机 ...

  7. TCP协议的服务器与客户端的程序设计(代码注释超详细)

    在上篇博客中讲到了三次握手和四次挥手: Linux网络编程--TCP中的三次握手和四次挥手_神厨小福贵!的博客-CSDN博客服务器编程和客户端编程的大致流程如下:三次握手是在客户端中的connect中 ...

  8. MQTT客户端连接服务器协议,mqtt客户端和服务器长连接

    mqtt客户端和服务器长连接 内容精选 换一换 介绍设置客户端和服务器的安全认证方式的相关参数.参数说明:表明与服务器建立链接后,不进行任何操作的最长时间.参数类型:USERSET取值范围:整型,0- ...

  9. mysql客户端不支持_MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端...

    MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端 我是node.js和MySQL初学者,我刚开始设置并尝试一些基本代码.但是,由于某种原因,我甚至无法与服务器建 ...

最新文章

  1. k8s service type_k8s重器之Service
  2. WAMP_DEDE兼容配置
  3. python 爬虫框架_Python网络爬虫-scrapy框架的使用
  4. 使用dom4j解析XML文件
  5. c#操作Xml(八)
  6. CPU+GPU异构计算完全解析
  7. 最简单的卸载vrv方法_低端赤道仪粗对极轴最简单方法
  8. 阿里算法工程师模拟题2018/5/7
  9. intel 傲腾内存与SSD HDD的对比
  10. vue项目引入阿里巴巴矢量图标库图标
  11. jQuery手动触发事件
  12. 第四届“泰迪杯”数据分析技能赛-赛题A:《通讯产品销售和盈利能力分析》报告
  13. win10将用户文件夹改为英文
  14. php 三色排序,三色旗排序问题 | 学步园
  15. 人在囧途之tar命令
  16. 无线耳机哪个品牌好?四大国内蓝牙耳机品牌排行
  17. 印象笔记桌面便签关闭后找回
  18. html datatable修改行,DataTable根据条件修改行颜色和特定格颜色
  19. 百度网盘限速的2个解决小办法
  20. 3dmax骨骼的绑定

热门文章

  1. 深度学习标注工具LabelImg的使用方法
  2. poj 2263 最短路变形——最小边的最大值
  3. poj 2253 最短路变形——最大边的最小值
  4. Linux redis配置服务,Linux 安装 redis 并配置成 service 系统服务
  5. Windows10和Ubuntu双系统下用windows引导Ubuntu
  6. 正弦光栅的生成matlab,matlab做正弦光栅衍射的计算机模拟
  7. jvm垃圾回收机制_JVM的垃圾回收机制总结
  8. 微信开发者工具(deepin linux 还是建议使用deppin深度商店安装此软件)
  9. gatk过滤_重测序2--看了不后悔的gatk-变异检测
  10. 光电编码器的原理及应用场合_图解编码器应用,推荐收藏