Lua Telnet Send & Receive



我试图在Lua中获得一个简单的telnet会话。我在互联网上看了看,还没有找到解决我的问题的方法,这是试图发送数据以及接收它。

到目前为止,我已经得到了这个脚本,它接收数据,但我不能发送任何返回:

local socket = require "socket"
local ip, port = "avalon-rpg.com", 23
local server, err = socket.connect(ip, port)
if server == nil then
  print(err)
else
  while true do
    s, status, partial = server:receive()
    print(s or partial)
    if status == "closed" then
      break
    end
  end
end
server:close()

有没有人能告诉我我必须添加什么,这样它就会接收输入并将其发送到服务器?提前感谢!:)

您必须要么发送,要么接收,因为您不能同时做这两件事。使用socket:setTimeout,至少可以使接收部分不阻塞。然而,Lua中的文件IO总是阻塞的,所以你必须

a)使用外部库从stdin中读取而不阻塞程序流程

b)限制程序的功能

对于b),您可以定义客户机在发送命令后总是等待响应(因此,在您发出新命令之前,从服务器发送的额外文本将而不是可见)。我猜您想要连接到一个MUD,这可能是一件合理的事情(尽管我不知道您试图连接到的特定MUD)。

一旦您弄清楚要做什么(使用外部库或无限期地等待用户输入),您可以相对简单地发送命令:

while true do
    local s, status, partial = server:receive()
    print(s or partial)
    if status == "closed" then
        break
    end
    -- Read from stdin
    local input = io.read("*l")
    if input ~= "" then
        server:send(input)
    end
end

相关内容

  • 没有找到相关文章