求助sql 联合查询sql分组查询不同内容

6638人阅读
之前编译安装了lua 5.2.2,下面是编译安装LuaSocket库的详细步骤。
1、下载源码
下载一个稳定发布版本:
LuaSocket 2.0.2源码:luasocket-2.0.2.tar.gz
$ tar zxvf luasocket-2.0.2
将会在当前目录下生成一个目录:luasocket-2.0.2
2.2 修改config文件
进入目录:luasocket-2.0.2,修改config文件
添加包含文件目录,即lua 5.2.2源码目录,添加如下行:
LUAINC=-I/home/wayz/lua_study/lua-5.2.2/src
修改安装目录如下,即原来lua 5.2.2的安装目录:
INSTALL_TOP_SHARE=/usr/local/share/lua/5.2
INSTALL_TOP_LIB=/usr/local/lib/lua/5.2
2.3 修改源码
2.3.1 修改luaL_reg
这时直接make会报如下的错误:
make[1]: 进入目录“/home/wayz/lua_study/luasocket-2.0.2/src”
gcc -I/home/wayz/lua_study/lua-5.2.2/src -DLUASOCKET_DEBUG
-pedantic -Wall -O2 -fpic
-c -o luasocket.o luasocket.c
In file included from luasocket.c:31:0:
auxiliar.h:38:61: 错误:unknown type name ‘luaL_reg’
luasocket.c:50:1: 错误:unknown type name ‘luaL_reg’
检查发现lua 5.2.2中确实没有定义这个结构,而是定义了luaL_Reg结构,因此修改luasocket-2.0.2的源码,把luaL_reg改为luaL_Reg,然后直接make即可。
2.3.2 修改luaL_typerror
经过2.3.1中的修改确实可以编译安装,但运行时报错如下:
Copyright (C)
Lua.org, PUC-Rio
& require (&socket&)
error loading module 'socket.core' from file '/usr/local/lib/lua/5.2/socket/core.so':
/usr/local/lib/lua/5.2/socket/core.so: undefined symbol: luaL_typerror
stack traceback:
[C]: in function 'require'
/usr/local/share/lua/5.2/socket.lua:13: in main chunk
[C]: in function 'require'
stdin:1: in main chunk
检查发现lua 5.2.2中没有定义luaL_typerror函数。
修改src/auxiliar.c文件源码:
将下面的代码:
int auxiliar_checkboolean(lua_State *L, int objidx) {
if (!lua_isboolean(L, objidx))
luaL_typerror(L, objidx, lua_typename(L, LUA_TBOOLEAN));
return lua_toboolean(L, objidx);
int auxiliar_checkboolean(lua_State *L, int objidx) {
luaL_checktype(L, objidx, LUA_TBOOLEAN);
return lua_toboolean(L, objidx);
修改src/options.c文件的78行和114行,将下面的代码:
if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE));
luaL_checktype(L, 3, LUA_TTABLE);
2.3.3 修改luaL_putchar函数的使用
修改src/buffer.c 和 src/mime.c文件,将对函数luaL_putchar的使用,改为使用luaL_addlstring函数。
注意两个函数参数的不同。
修改完直接make即可。
运行make install命令进行安装
运行下面的脚本,验证socket库:
#!/usr/bin/lua
-- 加载LuaSocket库
--require &socket&
local socket = require(&socket&)
host = &www.w3.org&
file = &/TR/REC-htm132.html&
-- 打开一个TCP连接
c = assert (socket.connect (host, 80))
c:send (&GET & .. file .. & HTTP/1.0\r\n\r\n&)
while (true) do
local s, status, partial = c:receive (2^10)
io.write (s or partial)
if status == &closed& then break end
c:close ()
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
(1)(3)(1)(1)(1)(1)(1)(1)(3)(1)(2)(1)(1)(6)(2)(2)(2)(3)(2)(6)(3)(8)(7)(2)(7)(1)主题 : 谁有3.2的luasocket使用范例
级别: 侠客
UID: 220256
可可豆: 1044 CB
威望: 1023 点
在线时间: 448(时)
发自: Web Page
来源于&&分类
谁有3.2的luasocket使用范例&&&
我是用lua开发的游戏,用websocket联网,可是总也连接不上,不知道是不是协议的问题,我想试试用luasocket,可是引擎里没有luasocket的使用范例,哪位朋友有这方面的资料,给推荐一下
级别: 新手上路
可可豆: 56 CB
威望: 26 点
在线时间: 27(时)
发自: Web Page
顶一个,顺便同求范例
级别: 禁止发言
UID: 353310
可可豆: 314 CB
威望: 284 点
在线时间: 37(时)
发自: Web Page
用户被禁言,该主题自动屏蔽!
级别: 新手上路
可可豆: 231 CB
威望: 231 点
在线时间: 77(时)
发自: Web Page
是啊 它里边只有websocket和http, 愣是没有原生socket
级别: 新手上路
可可豆: 93 CB
威望: 93 点
在线时间: 66(时)
发自: Web Page
回 3楼(gamcat) 的帖子
@hjf7788521 我有个自己的简易封装,你看看能用不?
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版编程—杂记(5)
&是 Lua 的网络模块库,它可以很方便地提供 TCP、UDP、DNS、FTP、HTTP、SMTP、MIME 等多种网络协议的访问操作。
它由两部分组成:一部分是用 C 写的核心,提供对 TCP 和 UDP 传输层的访问支持。另外一部分是用 Lua 写的,负责应用功能的网络接口处理。
下面介绍两种安装方法
第一种方法:如果你有安装了 Lua 模块的安装和部署工具&,那么一条指令就能安装部署好 LuaSocket:
第二种方法:如果没安装有 LuaRocks,也可以源码安装。
先把 LuaRocks 下载下来,当前可用的版本是 luasocket-3.0-rc1(luasocket的源码有托管在):
# git clone https:
把源码clone下来之后就可以进行本地源码安装,直接进入到luasocket目录进行编译安装了
-- socket方式请求
local socket = require(&socket&)
local host = &100.42.237.125&
local file = &/&
local sock = assert(socket.connect(host, 80))
-- 创建一个 TCP 连接,连接到 HTTP 连接的标准 80 端口上
sock:send(&GET & .. file .. & HTTP/1.0\r\n\r\n&)
local chunk, status, partial = sock:receive(1024) -- 以 1K 的字节块来接收数据,并把接收到字节块输出来
-- print(chunk or partial)
until status ~= &closed&
sock:close()
-- 关闭 TCP 连接
-- http访问请求
http=require(&socket.http&)
result=http.request(&/service/getIpInfo.php?ip=123.189.1.100&)
print(result)
-- smtp方法发送mail
local smtp = require(&socket.smtp&)
from = &&youmail@126.com&& -- 发件人
-- 发送列表
&&youmail@126.com&&,
&&youmail@qq.com&&
headers = {
to = &youmail@gmail.com&, -- 收件人
cc = '&&', -- 抄送
subject = &This is Mail Title&
body = &This is
Mail Content.&
r, e = smtp.send{
server=&&,
user=&youmail@126.com&,
password=&******&,
from = from,
rcpt = rcpt,
source = smtp.message(mesgt)
if not r then
print(&send ok!&)
使用 LuaSocket 还算简单吧,直接用 require 函数加载进来就行,在例如下面几个例子
1)输出一个 LuaSocket 版本信息:
local socket = require(&socket&)
print(socket._VERSION)
2)以 socket 的方式访问获取百度首页数据:
local socket = require(&socket&)
local host = &&
local file = &/&
-- 创建一个 TCP 连接,连接到 HTTP 连接的标准端口 -- 80 端口上
local sock = assert(socket.connect(host, 80))
sock:send(&GET & .. file .. & HTTP/1.0\r\n\r\n&)
-- 以 1K 的字节块来接收数据,并把接收到字节块输出来
local chunk, status, partial = sock:receive(1024)
print(chunk or partial)
until status ~= &closed&
-- 关闭 TCP 连接
sock:close()
3)使用模块里内置的 http 方法来访问:
local http = require(&socket.http&)
local response = http.request(&/&)
print(response)
本来想写成单 server 多 client 的 socket 聊天服务器,不过最后还是卡在客户端的数据更新上,单进程的 while 轮询(poll),一个&&就把服务器数据接收给截断了。
仅靠现有的 LuaSocket 模块不装其他第三方模块,也是很难做一个实时的聊天,虽然有&&在苦苦支撑,但是这还是一个填不平的坑来了。
可能用上面向并发的&&模块会解决这个数据接收阻塞问题,这个以后再看看,现阶段的成果是:在客户端的终端上敲一些东西后回车会通过 socket 给服务器发送数据,服务器接收到数据后再返回显示在客户端的终端上。
-- server.lua
local 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!&)
for conn_count, client in pairs(client_tab) do
local recvt, sendt, status = socket.select({client}, nil, 1)
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)
table.remove(client_tab, conn_count)
client:close()
print(&Client & .. conn_count .. & disconnect!&)
-- client.lua
local socket = require(&socket&)
local host = &127.0.0.1&
local port = 12345
local sock = assert(socket.connect(host, port))
sock:settimeout(0)
print(&Press enter after input something:&)
local input, recvt, sendt, status
while true do
input = io.read()
assert(sock:send(input .. &\n&))
recvt, sendt, status = socket.select({sock}, nil, 1)
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/article/use-lua-extension-libraries-luasocket-cases.html
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:199465次
积分:3549
积分:3549
排名:第7762名
原创:164篇
转载:78篇
(1)(2)(1)(4)(5)(1)(7)(5)(6)(5)(7)(5)(31)(5)(8)(10)(1)(5)(1)(5)(24)(19)(9)(19)(8)(20)(28)

我要回帖

更多关于 sql多表分组查询 的文章

 

随机推荐