LuaSocket
2015-05-30 17:43
316 查看
LuaSocket
LuaSocket 是 Lua 的网络模块库,它可以很方便地提供TCP、UDP、DNS、FTP、HTTP、SMTP、MIME
等多种网络协议的访问操作。它由两部分组成:一部分是用 C 写的核心,提供对 TCP 和 UDP 传输层的访问支持。另外一部分是用 Lua 写的,负责应用功能的网络接口处理。
安装 LuaSocket
如果你安装有 Lua 模块的安装和部署工具 --
LuaRocks,那么一条指令就能安装部署好 LuaSocket:
例如你想把 LuaSocket 模块的文件集中放在 "/data/lua/luasocket" 目录里,那么需要修改 config 文件里的 INSTALL_TOP_SHARE 和 INSTALL_TOP_LIB (这 2 个参数的值默认是 "/usr/local/share/lua/5.1" 和 "/usr/local/lib/lua/5.1"),修改之后如下:
安装配置设置好后,就可以编译安装 LuaSocket:
在当前用户根目录下打开 .profile 文件(没有则创建,打开 .bashrc 文件也可以),加上以下内容:
使用 LuaSocket 很简单,直接用 require 函数加载进来就行,例如输出一个 LuaSocket 版本信息:
本来想写成单 server 多 client 的 socket 聊天服务器,不过最后还是卡在客户端的数据更新上,单进程的 while 轮询(poll),一个
io.read 就把服务器数据接收给截断了。仅靠现有的 LuaSocket 模块不装其他第三方模块,也是很难做一个实时的聊天,虽然有
socket.select 在苦苦支撑,但是这还是一个填不平的坑来了。
可能用上面向并发的
concurrentlua 模块会解决这个数据接收阻塞问题,这个以后再看看,现阶段的成果是:在客户端的终端上敲一些东西后回车会通过 socket 给服务器发送数据,服务器接收到数据后再返回显示在客户端的终端上。一个简单的东西,纯属练手,代码如下:
相关文章推荐
- 举例说明关于 Lua闭包 的存在价值
- 写lua时需要注意的地方
- lua全局状态机
- LUA require 搜索路径指定方法
- 在Lua程序中使用SQLite的教程
- 在Lua程序中使用MySQL的教程
- 浅谈Lua的面向对象特性
- 简单讲解Lua中的垃圾回收机制
- Lua学习之coroutine总结
- Lua学习之metatable总结
- Lua内置的调试器用法详解
- Lua Require函数
- 浅析Lua编程中的异常处理
- Lua中的文件I/O操作教程
- 在Lua中使用模块的基础教程
- 详解Lua中的表的概念及其相关操作方法
- 浅析Lua中的迭代器
- Evaluate Reverse Polish Notation - LeetCode 150
- lua调用c++函数返回值作用
- How to Evaluate Machine Learning Models, Part 4: Hyperparameter Tuning