Lua sockets:无法连接和发送数据

这是我第一次在 Lua 中使用 sockets。无论我尝试什么,都无法连接。我是做错了什么还是没做什么?

--将存储房间 sockets
Rsock = {}
--将存储私人消息 sockets
Psock = {}
--将存储用户列表
userlist = {}
--将存储我们的封禁名单
banlist = {}
--仅在有必要时使用线程表
threads = {}
sock = require "socket";
http = require "socket.http";
local iterate = 0

function getAuth(user, password)
    url = "http://old.yuribot.com/server?inp=get_auth@"
        .. user .. "-" .. password
    return http.request(url)
end

function getServer(group)
    url = "http://old.yuribot.com/server?inp=group@".. group
    return http.request(url)
end

function room_connect(room)
    sock = sock.tcp();
    host = getServer(room);
    port = 443;
    sock.connect(host, 443);
    Rsock[room] = sock;
    sock:send("bauth:" ..  room  .. ":567765443" .. ":introbot:9911324" .. "\x00");
end

room_connect("shirayuri");
--print(getAuth("introbot", "9911324"));
--print(Rsock['shirayuri'])

P.S .:网站是 shirayuri.chatango.com

点赞
用户1548504
用户1548504

你得到了什么错误?我认为问题出在这一行上 -

sock:connect(host, 443);

它应该是

sock.connect(host, 443);

所以,如果你得到的错误是

bad argument #2 to 'bind'

那么用"."替换":"应该可以解决问题。如果还有其他错误,请在此发帖。

参考 http://www.lua.org/pil/16.html 了解冒号的作用。

2013-09-10 06:12:56
用户1442917
用户1442917

这段代码对我有效:

local room = 'shirayuri'
local http = require("socket.http")
local body, code = http.request("http://old.yuribot.com/server?inp=group@"..room)
if not body then error(code) end
print(body)

local socket = require("socket")
local conn = socket.tcp()
conn:connect(body, 443)
local res = conn:send("bauth:" ..  room  .. ":567765443" .. ":introbot:9911324")
print(res)

输出 "s18.chatango.com" 和 "42"。

2013-09-10 06:13:53